您的位置:首页 > 编程语言 > Java开发

java hashmap 排序 遍历 嵌套

2017-12-01 15:34 399 查看

一、介绍

对于 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();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java hashmap