Java 通过流API从映射中获取排序列表

Java 通过流API从映射中获取排序列表,java,collections,java-stream,Java,Collections,Java Stream,我试图用流API实现以下场景,但没有成功 我有下面的图表。密钥是此人的姓名,集合中有此人的朋友的姓名(密钥) 最后,我想根据一个人的受欢迎程度列出一份清单。列表应该如下所示 z, t, x, y 如何使用流API?列表排序=fooGraph.entrySet()实现它 List<String> sorted = fooGraph.entrySet() .stream() .sorted(Comparator.comparing(e -> e.g

我试图用
流API实现以下场景,但没有成功

我有下面的图表。密钥是此人的姓名,集合中有此人的朋友的姓名(密钥)

最后,我想根据一个人的受欢迎程度列出一份清单。列表应该如下所示

z, t, x, y
如何使用
流API

列表排序=fooGraph.entrySet()实现它
List<String> sorted = fooGraph.entrySet()
        .stream()
        .sorted(Comparator.comparing(e -> e.getValue().size(), Comparator.reverseOrder()))
        .map(Map.Entry::getKey)
        .collect(Collectors.toList());
.stream() .sorted(Comparator.comparing(e->e.getValue().size(),Comparator.reverseOrder()) .map(map.Entry::getKey) .collect(Collectors.toList());
List sorted=fooGraph.entrySet()
.stream()
.sorted(Comparator.comparing(e->e.getValue().size(),Comparator.reverseOrder())
.map(map.Entry::getKey)
.collect(Collectors.toList());

为什么要使用Steam API?只需将
TreeMap
与适当的
比较器一起使用即可。为什么要使用Steam API?只需将
TreeMap
与适当的
比较器一起使用即可。。我还有一个问题。如果两个人有相同数量的朋友,这段代码的行为如何?先到先得?@adfinitum仅当它是有序映射时,如
LinkedHashMap
。否则就没有“第一”的概念了,就像黄油一样。。我还有一个问题。如果两个人有相同数量的朋友,这段代码的行为如何?先到先得?@adfinitum仅当它是有序映射时,如
LinkedHashMap
。否则就没有“第一”的概念。
z, t, x, y
List<String> sorted = fooGraph.entrySet()
        .stream()
        .sorted(Comparator.comparing(e -> e.getValue().size(), Comparator.reverseOrder()))
        .map(Map.Entry::getKey)
        .collect(Collectors.toList());