美文网首页
Java Map中的排序

Java Map中的排序

作者: 树里的熊 | 来源:发表于2022-10-25 21:44 被阅读0次

    发现这个博客说的也挺好的,可以参考

    根据key排序

    map.entrySet().stream().sorted(Map.Entry.comparingByKey());
    

    根据value排序

    map.entrySet().stream().sorted(Map.Entry.comparingByValue());
    

    ⚠️并不是把map排序了,map本身没有变,只是map.sorted的结果是排序后的结果。

    所以想要使用排序后的map可以有以下两种方式:

    1. 直接在stream上继续操作,比如将排序后的entry输出
    map.entrySet().stream().sorted(Map.Entry.comparingByValue())
    .forEach(System.out::println);
    

    System.out::println是一个方法引用,就是把System.out类的println方法作为函数参数传入forEach函数。
    比如我们还可以这样输出:

    map.entrySet().stream().sorted(Map.Entry.comparingByValue()).forEach(this::show);
    public void show(Entry<String, Integer> s) {
        System.out.println(s.getKey() + ": " + s.getValue());
      }
    
    1. 将map存下来,其实也是通过在流上继续操作实现
     map =  map.entrySet().stream()
            .sorted(Map.Entry.comparingByValue())
            .collect(
                Collectors.toMap(x -> x.getKey(), x -> x.getValue(), (x1, x2) -> x2, LinkedHashMap::new));
    

    升序/降序

    方法默认是升序的,如果需要降序的话,就在sorted里面加一个reverseOrder

    map.entrySet().stream().sorted(Collections.reverseOrder(Entry.comparingByValue()))
    .forEach(this::show);
    

    输出结果:

    相关文章

      网友评论

          本文标题:Java Map中的排序

          本文链接:https://www.haomeiwen.com/subject/zaczzrtx.html