java與c++的map使用比較
java和c++都有map,java的Map是介面,M大寫;c++的map是實現好的類,m小寫。
所以java一般需要使用HashMap,c++使用map。
c++的定義與設值:
#include <map>
map<string, int> inMap;
inMap.clear();
inMap.insert(make_pair("chargeId", 1));
java的定義與設值:
import java.util.HashMap;
import java.util.Map;
Map map = new HashMap();//jdk1.4或以前
Map<String,Integer> map = new HashMap<String,Integer>();//jdk1.5或以後
map.put("chargeId", 1);
map是STL裡,需要include<map>。java在new的時候已經清空的記憶體,所以不需要c++這麼麻煩的clear。
c++的insert和java的put差不多,但是c++需要麻煩的呼叫make_pair把鍵值對轉化為一個結構體。
c++的map支援基本型別,但是java的是不支援的,只能用Integer,不能用int,put的時候只是自動裝箱轉化為Integer而已。
c++的取值:
map<string, int>::iterator it = inMap.find("chargeId");
int mapValue = 0;
if (it != inMap.end())
{
mapValue = it->second;
}
java的取值:
Integer i = map.get("chargeId") == null ? 0 : map.get("chargeId");//jdk1.5或以後
c++的取值真心麻煩啊,寫這麼多行程式碼。java的優雅就是這麼來的。
c++的find相當於java的get,但是c++必須返回一個迭代器,你需要通過迭代器來判斷獲取。
結構體裡也定義好了first和second,你想獲取哪個就哪個。
而java把全部的獲取都做好了,你只需要get一下。如果沒有,則返回null。java的基本型別不能為null,所以不支援基本型別。