我有以下代码:(为了勇敢而简化)
public void search(Predicate<String> predicate, Elements elements)
{
List<SearchResult> searchResults = elements.stream()
.filter(element -> predicate.test(element.ownText()))
.map(element -> new SearchResult(element.ownText(), element.baseUri(),element.tagName()))
.collect(Collectors.toList());
}
但现在,我想要另一个列表,其中包含所有过滤后的元素,而无需映射。
是否可以使用流来做到这一点,或者我应该更改为 foreach 循环?
您可以收集过滤后的元素,然后使用此列表将元素映射到搜索结果:
public void search(Predicate<String> predicate, Elements elements) {
List<Element> filteredElements =
elements.stream()
.filter(element -> predicate.test(element.ownText()))
.collect(Collectors.toList());
List<SearchResult> searchResults =
filteredElements.stream()
.map(element -> new SearchResult(element.ownText(),element.baseUri(),element.tagName()))
.collect(Collectors.toList());
}
这不会比其他答案的解决方案花费更多时间,但没有副作用,线程安全并且易于阅读和理解。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)