我正在尝试流式处理字符串列表。我知道我们可以像下面这样:
list.stream().filter(i -> !Stringutils.isempty(service.someMethod(i))).map(i -> service.someMethod(i)).findfirst().get();
问题是我需要打service.someMethod
两次电话。
这里有service.someMethod
什么建议可以避免在过滤器中调用两次,而在映射中调用两次?
您应该这样反转地图和过滤器:
list.stream()
.map(service::someMethod)
.filter(s -> !Stringutils.isEmpty(s)) // or if it exists, StringUtils::isNotEmpty
.findFirst()
.get()
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句