Rog*_*gue 3 java sorting java-8
我有一个ConcurrentMap<String, Integer>,我想List<String>从它的字符串映射到最大的整数,第二,第二,等等.
现在我有这样的事情:
循环遍历keySet地图
在该循环中,循环"排序" List<String>
保持循环,直到键String的相应值小于i"已排序"的元素List,并插入它.
现在这将有效,但我怀疑它是非常有效的.Java 8是否有任何内置的排序算法可以帮助我?
使用流,你可以像这样写:
List<String> sorted = map.entrySet().stream()
.sorted(reverseOrder(comparing(Entry::getValue)))
.map(Entry::getKey)
.collect(toList());
Run Code Online (Sandbox Code Playgroud)
或者如Holger评论的那样:
List<String> sorted = map.entrySet().stream()
.sorted(comparingByValue(reverseOrder()))
.map(Entry::getKey)
.collect(toList());
Run Code Online (Sandbox Code Playgroud)
注意静态导入:
import static java.util.Collections.reverseOrder;
import static java.util.Comparator.comparing;
import static java.util.stream.Collectors.toList;
Run Code Online (Sandbox Code Playgroud)
我不知道这是否比你的方法更有效,但你可以分析两者并根据实际测量结果来决定.