1.map的遍历
// 创建 HashMap 对象map Map map = new HashMap(); // 返回所有 key 值 for (Integer i : map.keySet()) { System.out.println("key: " + i); } // 返回所有 value 值 for(String value: map.values()) { System.out.println("value: " + value); } for(Entry entry: map.entrySet()) { System.out.println(entry); System.out.println("key:"+entry.getKey()); System.out.println("value:"+entry.getValue()); }
2.对map进行排序 (1)根据map的value进行排序,先将map转为list,再用sort方法
Map map=new HashMap<>() //注意 ArrayList<>() 括号里要传入map.entrySet() List> list = new ArrayList<>(map.entrySet()); Collections.sort(list, new Comparator>() { @Override public int compare(Map.Entry o1, Map.Entry o2) { //按照value值,从小到大排序// return o1.getValue() - o2.getValue(); //按照value值,从大到小排序// return o2.getValue() - o1.getValue(); //按照value值,用compareTo()方法默认是从小到大排序 return o1.getValue().compareTo(o2.getValue()); } }); String[][] ans=new String[k][2]; //注意这里遍历的是list,也就是我们将map.Entry放进了list,排序后的集合 for(int i=0;i
(2)根据map的key进行排序,利用TreeMap
1.无序,不允许重复(无序指元素顺序与添加顺序不一致)
2.TreeMap集合默认会对key进行升序排序,所以键必须实现自然排序和定制排序中的一种,可以通过使用Comparator接口自定义元素的排序
3…底层使用的数据结构是二叉树
//TreeMap默认按key升序排列Map map = new TreeMap<>();//TreeMap默认按key降序排列Map map = new TreeMap<>(Collections.reverseOrder());
3.HashMap 与 linkedHashMap
1.HashMap 是无序的,即不会记录插入的顺序。最多允许一条记录的key为 null,不支持线程同步。
2.linkedHashMap是HashMap的子类,它内部有一个链表,保持插入的顺序。迭代的时候,也是按照插入顺序迭代,
Map map=new HashMap(); Map map2=new linkedHashMap();
4.map赋值
Map map=Map.of(1,"google",2,"baidu");
5.map.getOrDefault()
getOrDefault():获取指定 key 对应对 value,如果找不到 key ,则返回设置的默认值