当前位置: 首页 > 知识库问答 >
问题:

Java 8-按值排序映射并收集结果[重复]

施敏达
2023-03-14

我试图使用JDK 8风格的函数按值对地图进行排序。虽然我得到了排序部分,但我不确定如何在树形图中收集结果。有人能解释一下如何以陈述式的方式完成这项工作吗?

我需要收集另一张地图

    Map<String, String> map = new HashMap<>();
    map.put("John", "time3");
    map.put("Henry", "time6");
    map.put("Smith", "time1");
    map.put("Rock", "time2");
    map.put("Ryan", "time5");
    map.put("Gosling", "time4");

   map.entrySet().stream()
            .sorted(Map.Entry.<String, String>comparingByValue().reversed())
            ;

共有1个答案

薛鹏飞
2023-03-14

虽然有两个问题与此类似,但我明确希望将结果存储在地图中。以下是解决方案。

    Map<String, String> sortedMap = map.entrySet().stream()
            .sorted(Map.Entry.<String, String>comparingByValue().reversed())
            .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (v1, v2) -> v2, LinkedHashMap::new));
 类似资料:
  • 我有map,我想有一个列表,它按键的对应值排序(最小到最大)。我的尝试是:

  • 我正在使用预定义的MyComparator对流中填充的MyObject(该对象有一个getName()getter)进行排序。 那么一旦排序,是否有一种方法将MyObject的名称和排序后对象的顺序/位置收集到映射中? 下面是我认为应该是的样子: 例如,如果集合包含三个对象(名称为name1的object1,名称为name2的object2,名称为name3的object3),并且在对它们进行排序

  • 我不熟悉Java8,不知道如何使用流及其排序方法。如果我有下面的映射,那么如何使用Java8按值对该映射进行排序,从而只获取前10个条目。 我知道在Java 8之前,我们可以按以下链接排序:https://stackoverflow.com/a/109389/4315608

  • 我正在浏览Quarkus当前可用的指南 我说的是在不使用现有JPA实体的情况下,将SQL查询结果绑定到自定义pojo的可能性。我找到的所有示例都只从一个表中提取记录,从中提取出相同JPA实体的实例列表。然而,这不太可能是现实世界应用程序的常见用例。大多数情况下,我们必须处理不那么琐碎的查询,这些查询涉及来自不同表的字段的混合、连接或计算字段。 SQL ResultSet映射是一个方便的JPA功能,

  • 你可以使用 org.hibernate.criterion.Order 来为查询结果排序。 List cats = sess.createCriteria(Cat.class) .add( Restrictions.like("name", "F%") .addOrder( Order.asc("name") ) .addOrder( Order.desc("age") )