[英]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);
我得到了所需的結果,但是如何使用 stream 來實現相同的結果
最好交換map
並在“嵌套” stream 中filter
以減少代碼一點點,但通常這是一個小的改進:
List<String> newfoundValueList = valueListToBeFilter
.stream()
.flatMap(value -> _webElementsErrorList
.stream()
.map(WebElement::getText)
.filter(elementText -> elementText.contains(value))
)
.collect(Collectors.toList());
應該與WebElement
-List 的.flatMap
和另一個 stream 一起使用,如下所示:
List<String> newfoundValueList = valueListToBeFilter.stream()
.flatMap(value -> _webElementsErrorList.stream()
.filter(element -> element.getText().contains(value))
.map(element -> element.getText()))
.collect(Collectors.toList());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.