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

Java 8流映射到按值排序的键列表

邴墨竹
2023-03-14
问题内容

我有地图Map<Type, Long> countByType,我想要一个列表,其中按其对应的值对键(最小到最大)进行了排序。我的尝试是:

countByType.entrySet().stream().sorted().collect(Collectors.toList());

但这只是给我一个条目列表,如何在不丢失顺序的情况下获得类型列表?


问题答案:

您说要按值排序,但是您的代码中没有。传递一个lambda(或方法引用)sorted来告诉它您想如何排序。

而您想获得钥匙;用于map将条目转换为键。

List<Type> types = countByType.entrySet().stream()
        .sorted(Comparator.comparing(Map.Entry::getValue))
        .map(Map.Entry::getKey)
        .collect(Collectors.toList());


 类似资料:
  • 我有map,我想有一个列表,它按键的对应值排序(最小到最大)。我的尝试是:

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

  • 我有映射键作为字符串和值作为列表。列表可以有10个唯一值。我需要转换这个映射键为整数和值为列表。示例如下: 输入: 2:“钥匙-1”,“钥匙-2” 3:“钥匙-1”、“钥匙-2”、“钥匙-3” 4:“钥匙-1”、“钥匙-2”、“钥匙-3”

  • 我在迭代一个对象内的列表时遇到了一个问题,该对象内嵌在另一个映射中。我的目标是迭代这个列表并生成一个映射 ,我希望使用streams和lamdas来实现这一点。 我在上面看到了,我需要通过迭代FolderBo中的elementList从elementBo创建一个带有map 的映射。folderBo本身就在Modelbo的地图内。