Stream<Integer> stream = Stream.of(2, 1, 3, 4, 2, 3, 2);
Run Code Online (Sandbox Code Playgroud)
如果数字出现的次数较多,则显示该数字,结果为2
Stream<Integer> stream = Stream.of(2, 1, 3, 4, 2, 3);
Run Code Online (Sandbox Code Playgroud)
如果多个数字出现的次数相同,则取最大数字,结果为 2
Optional<Map.Entry<Integer, Long>> sorted1 = stream.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()))
.entrySet().stream().filter(k -> k.getValue() > 1).max(Comparator.comparing(Map.Entry::getValue));
Run Code Online (Sandbox Code Playgroud)
我已经编写了上述逻辑,但无法获取这两个结果。
用于.thenComparing ()按值对具有相同计数的值进行排序。
Optional<Entry<Integer, Long>> sorted1 = Stream.of (1, 2, 2, 3, 1)\n .collect (Collectors.groupingBy (Function.identity (), Collectors.counting ()))\n .entrySet ()\n .stream ()\n .filter (k -> k.getValue () > 1)\n .max (Comparator.<Map.Entry<Integer, Long>, Long>comparing (Map.Entry::getValue)\n .thenComparing (Map.Entry::getKey)\n );\nRun Code Online (Sandbox Code Playgroud)\n注意:如果您\xe2\x80\x99只对值感兴趣,而不是计数,请.map (Map.Entry::getKey)在末尾添加。
注意:该行filter (k -> k.getValue () > 1)意味着您\xe2\x80\x99将获得一个空的输入选项,例如 [1] 或 [1, 2, 3],这可能是也可能不是您想要的(删除它会分别导致 1 和3)。
| 归档时间: |
|
| 查看次数: |
186 次 |
| 最近记录: |