我试图找出使用Java流是否有一种优雅的方式来执行以下操作:
到目前为止,我能够做到的唯一方法是在每个级别创建一个中间地图,它可以工作但感觉很脏.有没有可接受的方法来实现这一点,例如通过实现自定义收集器或类似的东西?
And*_*ner 10
只需创建一个Comparator<Pojo>:
Comparator<Pojo> comparator =
Comparator.comparingInt(
p -> StringUtils.getLevenshteinDistance(p.surname(), surnameTypedIn)
Run Code Online (Sandbox Code Playgroud)
然后使用Stream.min方法:
Optional<Pojo> minPojo = listOfPojos.stream().min(comparator);
Run Code Online (Sandbox Code Playgroud)
(如果需要,您可以Comparator.comparingInt在Stream.min通话中内联;我只是将它们分开以便于阅读).
或者,没有流:
Pojo minPojo = Collections.min(listOfPojos, comparator);
Run Code Online (Sandbox Code Playgroud)
注意,这种方式会抛出一个NoSuchElementExceptionif listOfPojos为空.
| 归档时间: |
|
| 查看次数: |
345 次 |
| 最近记录: |