首页 > 解决方案 > 使用 java8 迭代两个列表以查找匹配并返回布尔值

问题描述

我有两个列表如下

List<String> pathNames = Lists.newArrayList("/state", "/country", "/country/name");
List<String> newPaths = Lists.newArrayList("/country/name");

我对每个java代码都有正常的迭代两个列表以找到匹配项并返回布尔值,如下所示

if(CollectionUtils.isNotEmpty(pathNames)) {
    for (String path : newPaths) {
        for (String reqPath: pathNames) {
            if(FilenameUtils.wildcardMatch(path, reqPath)) {
               return true;
            }
        }
    }
}

但我想在 Java8 中重构并做同样的事情,任何帮助都将不胜感激。

标签: javaarraylistjava-8

解决方案


您可以在两个列表上使用流管道并调用anyMatch

return CollectionUtils.isNotEmpty(pathNames) &&
       newPaths.stream().anyMatch(np -> 
          pathNames.stream().anyMatch(pn -> FilenameUtils.wildcardMatch(np, pn)));

推荐阅读