java hashmap 排序 遍历 嵌套

一、介绍

对于 HashMap 而言,能快速存、取 Map 的 key-value 对。 HashMap 的实现不是同步的,这意味着它不是线程安全的。它的key、value都可以为null。此外,HashMap中的映射不是有序的。
继承关系如下:
《java 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();
      }
}
    原文作者:青盏
    原文地址: https://blog.csdn.net/qq_16234613/article/details/78687294
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞