一、介绍
对于 HashMap 而言,能快速存、取 Map 的 key-value 对。 HashMap 的实现不是同步的,这意味着它不是线程安全的。它的key、value都可以为null。此外,HashMap中的映射不是有序的。
继承关系如下:
二、操作
初始化:
import java.util.HashMap;
HashMap<String, Integer> toIndex = new HashMap<>();
存:
toIndex.put("a", 1);
取:
toIndex.get("a");
是否存在键:
toIndex.containsKey("a");
是否为空:
toIndex.isEmpty();
大小:
toIndex.size();
清空:
toIndex.clear();
删除:
toIndex.remove("a");
toIndex.remove("a", 1);
替换:
toIndex.replace("a");
toIndex.replace("a", 1);
获取键集合:
toIndex.keySet();
获取键值集合:
toIndex.entrySet();
三、排序、遍历、嵌套
降序排序:
//先转成list形式
List<Map.Entry<String, Integer>> topList = new ArrayList<Map.Entry<String, Integer>>(tops.entrySet());
Collections.sort(topList, new Comparator<Map.Entry<String, Integer>>() {
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
//降序,升序把o1 o2调换位置
return o2.getValue().compareTo(o1.getValue());
}
});
// 取权重最高值为预测页面
Map.Entry<String, Integer> first = topList.get(0);
遍历方法:
//取键值对遍历
Map map = new HashMap();
Iterator iter = map.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry) iter.next();
Object key = entry.getKey();
Object val = entry.getValue();
}
//取键遍历
Map map = new HashMap();
Iterator iter = map.keySet().iterator();
while (iter.hasNext()) {
Object key = iter.next();
Object val = map.get(key);
}
for (String k : history.keySet()) {
tops.put(k, history.get(k));
}
嵌套:
HashMap<String,HashMap<String,Integer>> maps = new HashMap<String,HashMap<String,Integer>>();
嵌套赋值,有一个注意点,对于嵌套的复制,你需要先把原先key对的的内部map取出来,不然,再次put时会将其覆盖掉。
HashMap<String, Integer> add = maps.get("a");
add.put("1",add.get("1")+templsit.size() ) ;
maps.put("a",add);
嵌套遍历:
Iterator iter = maps.keySet().iterator();
while (iter.hasNext()){
Object keyk = iter.next();
HashMap<String, Double> innerMaps = maps.get(keyk);
Iterator iterIn = innerMaps.entrySet().iterator();
Double prob = 1d;
while(iterIn.hasNext()){
Map.Entry entry = (Map.Entry) iterIn.next();
String webId = (String) entry.getKey();
Double weight = (Double) entry.getValue();
}
}