java lambda top 分组取前10
对集合中的对象,以kw为分组,去分数最高的10个key
@Data
static class Keyword {
private String kw;
private String score;
}
list.stream()
.collect(Collectors.toMap(Keyword::getKw, Function.identity(),
BinaryOperator.maxBy(Comparator.comparing(k -> Double.parseDouble(k.getScore())))))
.values().stream()
.sorted((k1, k2) -> Double.compare(Double.parseDouble(k2.getScore()), Double.parseDouble(k1.getScore())))
.limit(10)
.map(Keyword::getKw)
.collect(Collectors.toList());
touch fish