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