欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

Map的遍历、排序等问题

时间:2023-06-08
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 ,则返回设置的默认值

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。