Java里对map里的元素进行排序

我们知道,HashMap是使用hash算法来定位key的逻辑存储位置,也就是有序存入map里的键值对,取出的时候可能就无序了,所以有时候就需要对map进行一下排序输出。
直接看代码:

public static void main(String[] args) {
		Map<String,Integer> map = new HashMap<>();
        map.put("故障",15);
        map.put("干扰",23);
        map.put("下行",25);
        map.put("发故",14);
        map.put("RBC",17);

        //这是升序比较器,降序的话,返回值改成相反就可以了
        Comparator<Map.Entry<String, Integer>> valueComparator = new Comparator<Map.Entry<String,Integer>>() {
            @Override
            public int compare(Map.Entry<String, Integer> o1,
                               Map.Entry<String, Integer> o2) {
                return o2.getValue()-o1.getValue();
            }
        };
        // map转换成list进行排序
        List<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet());
        // 排序
        Collections.sort(list,valueComparator);

		/*高级写法也可以这样
		ArrayList> list = new ArrayList(map.entrySet());
		Collections.sort(list, (a, b)-> {
    				return b.getValue() - a.getValue() ;
			}
			*/

        for (Map.Entry<String, Integer> entry : list) {
           System.out.println(entry.getKey() + ":         " + entry.getValue());
        }

	}

看下结果,完全没问题,只是把map的排序转化成了list的排序
Java里对map里的元素进行排序_第1张图片

你可能感兴趣的:(java相关,java,数据结构,开发语言,map排序)