Mar*_*arc 3 java collections java-stream
让我们假设我有一个HasMap<String, Student>
,其中Student
有一个方法double getAverage()
,是否有一种聪明的方法可以List<String>
从Map
按平均递减顺序排序的键中检索一个键?
我正在考虑使用流来实现紧凑性,但这不起作用:
List<String> ordered = studentMap.entrySet().stream()
.sorted((e1, e2) -> e2.getValue().getAverage().compareTo(e1.getValue().getAverage()))
.map(Map.Entry::getKey)
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
为此,您可以使用Comparator.comparingDouble
和Comparator.reversed()
:
List<String> ordered = studentMap.entrySet().stream()
.sorted(Comparator.<Map.Entry<String, Student>>comparingDouble(e -> e.getValue().getAverage()).reversed())
.map(Map.Entry::getKey)
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
64 次 |
最近记录: |