如何使用Java Stream替换嵌套foreach从现有列表筛选匹配值生成新列表
Java Stream 替换嵌套 for 循环实现方案
你可以通过flatMap平铺两层迭代逻辑,实现和原有嵌套for循环完全一致的效果,代码如下:
import java.util.stream.Collectors; // 原有变量定义保持不变 List<String> valueListToBeFilter = Arrays.asList("8 digit mobile number", "Please enter mobile number."); // _webElementsErrorList 沿用你原有定义的元素列表即可 List<String> newfoundValueList = valueListToBeFilter.stream() .flatMap(value -> _webElementsErrorList.stream() .filter(element -> element.getText().contains(value)) .map(WebElement::getText)) .collect(Collectors.toList()); newfoundValueList.forEach(System.out::println);
补充说明
- 逻辑完全对齐原代码:同一个WebElement如果文本匹配多个关键词,会和原逻辑一样重复存入结果列表,如果需要去重可在
collect前添加.distinct()操作 - 时间复杂度和原有实现一致,没有额外性能损耗,仅写法更简洁
内容的提问来源于stack exchange,提问作者DeepakVerma
相关产品推荐
相关产品推荐

