1. 程式人生 > >java與c++的map使用比較

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,所以不支援基本型別。