我正在尝试使用Stream API
实现以下方案,但没有成功。
我有以下图表。关键是人的姓名,集合中有人的朋友(密钥)的名称。
Map<String, Set<String>> fooGraph
我希望根据朋友的数量(受欢迎程度)得到一个排序的ArrayList,一个人有。
例如,
这是fooGraph
及其值
x -> a,b,c
y -> a
z -> a,b,c,d,e,f
t -> a,b,c,d
并且在一天结束时,我希望根据一个人的受欢迎程度列出一个列表。该列表应如下所示
z, t, x, y
如何使用Stream API
实现目标?
答案 0 :(得分:4)
List<String> sorted = fooGraph.entrySet()
.stream()
.sorted(Comparator.comparing(e -> e.getValue().size(), Comparator.reverseOrder()))
.map(Map.Entry::getKey)
.collect(Collectors.toList());