通过 Stream API 从地图中获取排序列表

Ad *_*tum 1 java collections java-stream

我正在尝试使用 实现以下场景,Stream API但没有成功。

我有以下图表。键是人的名字,集合是人的朋友的名字(键)。

Map<String, Set<String>> fooGraph
Run Code Online (Sandbox Code Playgroud)

我想根据一个人的朋友数量(受欢迎程度)来排序 ArrayList。

例如,

这是fooGraph它的价值观

x -> a,b,c

y -> a

z -> a,b,c,d,e,f

t -> a,b,c,d
Run Code Online (Sandbox Code Playgroud)

归根结底,我想要一个基于一个人的受欢迎程度的列表。该列表应如下所示

z, t, x, y
Run Code Online (Sandbox Code Playgroud)

如何实现Stream API

shm*_*sel 5

List<String> sorted = fooGraph.entrySet()
        .stream()
        .sorted(Comparator.comparing(e -> e.getValue().size(), Comparator.reverseOrder()))
        .map(Map.Entry::getKey)
        .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)