【问题标题】:how to convert created new list of matched values from existing list using java stream如何使用java流从现有列表中转换创建的新匹配值列表
【发布时间】:2021-11-26 20:32:50
【问题描述】:

目前我使用嵌套的 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);

我得到了所需的结果,但是如何使用流来达到同样的效果

【问题讨论】:

    标签: java selenium java-stream


    【解决方案1】:

    在“嵌套”流中交换mapfilter 可能会更好一点,以减少代码,但通常这是一个小的改进:

    List<String> newfoundValueList = valueListToBeFilter
        .stream()
        .flatMap(value -> _webElementsErrorList
            .stream()
            .map(WebElement::getText)
            .filter(elementText -> elementText.contains(value))
        )
        .collect(Collectors.toList());
    

    【讨论】:

      【解决方案2】:

      应该使用.flatMapWebElement-List 的另一个流,如下所示:

      List<String> newfoundValueList = valueListToBeFilter.stream()
          .flatMap(value -> _webElementsErrorList.stream()
              .filter(element -> element.getText().contains(value))
              .map(element -> element.getText()))
          .collect(Collectors.toList());
      

      【讨论】:

      • 你能推荐一些有助于学习流和 lambda 的教程吗?
      猜你喜欢
      • 2012-11-14
      • 1970-01-01
      • 2019-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-27
      • 2022-07-13
      • 2018-09-24
      相关资源
      最近更新 更多