当前位置: 首页 > 面试题库 >

如何在Java流中按值降序对LinkedHashMap进行排序?

冯德宇
2023-03-14
问题内容

可以按升序对它进行排序:

myMap.entrySet().stream()
    .sorted(Map.Entry.comparingByValue())
    .collect(Collectors.toMap(Entry::getKey, Entry::getValue));

如何按降序排列?


问题答案:

要以相反顺序排序,请将Comparator.reverseOrder()作为参数传递给comparingByValue

要获取a
LinkedHashMap,您必须明确要求使用4参数toMap()。如果您未指定所需的地图类型,则将获得默认值,而默认值是HashMap。由于HashMap不保留元素的顺序,因此绝对不会为您服务。

myMap.entrySet().stream()
        .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
        .collect(Collectors.toMap(
                Map.Entry::getKey, 
                Map.Entry::getValue, 
                (x,y)-> {throw new AssertionError();},
                LinkedHashMap::new
        ));

使用静态导入,它将变得更加令人愉快:

myMap.entrySet().stream()
        .sorted(comparingByValue(reverseOrder()))
        .collect(toMap(
                Map.Entry::getKey, 
                Map.Entry::getValue, 
                (x,y)-> {throw new AssertionError();},
                LinkedHashMap::new
        ));


 类似资料:
  • 要按升序对其进行int排序,我可以使用: 我怎样才能按照递减的顺序来做呢?

  • 如何对值进行排序,并将其直接按降序放入for循环本身的数组中,而不是在for循环之后使用sorted函数?

  • 考虑下面的哈希图: 具有诸如 我需要按值对hashmap进行降序排序,但如果值相等,则按键进行升序排序: 到目前为止,我试着分别按键排序,然后按值排序,但我不相信这种方法。除了创建更多的hashmaps之外,还有什么好方法呢?

  • 问题内容: 我有一个同时包含键和值的字符串的Map。 数据如下: 我想根据其键对地图进行排序。因此,最后,我将拥有..依此类推。 最终,我试图从该Map中获取两个字符串。 第一个字符串:问题(顺序为1 ..10) 第二个字符串:答案(与问题的顺序相同) 现在,我有以下内容: 这使我的问题成串出现,但顺序不正确。 问题答案: 简短答案 使用。这正是它的目的。 如果将此地图传递给你,并且你无法确定类型

  • 我有一个HashMap与作为关键和一个值作为价值。 我的目标是通过降序值对Hashmap进行排序。应在

  • 问题内容: 我有一堂水果课。我正在创建此类的列表,并将每个水果添加到列表中。我想根据水果名称的顺序对该列表进行排序。 我正在使用for循环创建它的列表 我需要使用列表中每个对象的水果名称对该arrayList进行排序 问题答案: 使用这样的: 现在,你的水果清单将基于进行排序。