我试图找出使用Java流是否有一种优雅的方式来执行以下操作:
-
获取Pojos列表,其中一个字段是字符串(例如姓氏)
-
获取要搜索的字符串(例如surnameTypedIn)
-
在Levenshtein距离最小的列表中找到Pojo(我正在使用Apache Commons StringUtils.getLevenshteinDistance)
-
返回整个Pojo,而不仅仅是姓氏或距离
到目前为止,我能够做到的唯一方法是在每个级别创建一个中间 Map ,它可以工作但感觉很脏 . 有没有可接受的方法来实现这一点,例如通过实现自定义收集器或类似的东西?
1 回答
只需创建
Comparator<Pojo>
:然后使用
Stream.min
方法:(如果需要,可以在
Stream.min
调用中内联Comparator.comparingInt
;为了便于阅读,我将它们分开) .或者,没有流:
注意,如果
listOfPojos
为空,这种方式将抛出NoSuchElementException
.