java hashmap 排序 遍历 嵌套

来源:互联网 发布:地下室防水算法 编辑:程序博客网 时间:2024/06/06 19:31

一、介绍

对于 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();      }}
原创粉丝点击