如何使用 java 流从现有列表转换创建的新匹配值列表
how to convert created new list of matched values from existing list using java stream
目前我使用嵌套的 for-each 循环来实现相同的目的。
List<String> valueListToBeFilter = Arrays.asList("8 digit mobile number", "Please enter mobile number.");
List<String> newfoundValueList = new ArrayList<>();
for (String value : valueListToBeFilter) {
for (WebElement element : _webElementsErrorList) {
if (element.getText().contains(value))
newfoundValueList.add(element.getText());
}
}
newfoundValueList.forEach(System.out::println);
我得到了所需的结果,但如何使用流实现相同的结果
应该与 .flatMap
和 WebElement
-List 的另一个流一起工作,如下所示:
List<String> newfoundValueList = valueListToBeFilter.stream()
.flatMap(value -> _webElementsErrorList.stream()
.filter(element -> element.getText().contains(value))
.map(element -> element.getText()))
.collect(Collectors.toList());
在“嵌套”流中交换 map
和 filter
可能会更好,以进一步减少代码,但通常这是一个小改进:
List<String> newfoundValueList = valueListToBeFilter
.stream()
.flatMap(value -> _webElementsErrorList
.stream()
.map(WebElement::getText)
.filter(elementText -> elementText.contains(value))
)
.collect(Collectors.toList());
目前我使用嵌套的 for-each 循环来实现相同的目的。
List<String> valueListToBeFilter = Arrays.asList("8 digit mobile number", "Please enter mobile number.");
List<String> newfoundValueList = new ArrayList<>();
for (String value : valueListToBeFilter) {
for (WebElement element : _webElementsErrorList) {
if (element.getText().contains(value))
newfoundValueList.add(element.getText());
}
}
newfoundValueList.forEach(System.out::println);
我得到了所需的结果,但如何使用流实现相同的结果
应该与 .flatMap
和 WebElement
-List 的另一个流一起工作,如下所示:
List<String> newfoundValueList = valueListToBeFilter.stream()
.flatMap(value -> _webElementsErrorList.stream()
.filter(element -> element.getText().contains(value))
.map(element -> element.getText()))
.collect(Collectors.toList());
在“嵌套”流中交换 map
和 filter
可能会更好,以进一步减少代码,但通常这是一个小改进:
List<String> newfoundValueList = valueListToBeFilter
.stream()
.flatMap(value -> _webElementsErrorList
.stream()
.map(WebElement::getText)
.filter(elementText -> elementText.contains(value))
)
.collect(Collectors.toList());