gpt4 book ai didi

java - 是否可以使用一行将流收集到两个不同的集合?

转载 作者:行者123 更新时间:2023-12-02 08:19:15 24 4
gpt4 key购买 nike

我有以下代码:(为了勇敢而简化)

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());
}

这不会比其他答案的解决方案花费更多时间,但没有副作用,线程安全并且易于阅读和理解。

关于java - 是否可以使用一行将流收集到两个不同的集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34134263/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com