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());
posted @ 2023-07-04 11:14  meow_world  阅读(218)  评论(0)    收藏  举报