java - 使用 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 中重构并做同样的事情,任何帮助都将不胜感激。
解决方案
您可以在两个列表上使用流管道并调用anyMatch
:
return CollectionUtils.isNotEmpty(pathNames) &&
newPaths.stream().anyMatch(np ->
pathNames.stream().anyMatch(pn -> FilenameUtils.wildcardMatch(np, pn)));
推荐阅读
- strsplit - 只用逗号分割成字符串数组,而不是值c#
- ios - 由于 iOS 13.2 中未捕获的异常“NSInternalInconsistencyException”而终止应用程序
- javascript - gsap 旋转 - 如何避免急剧过渡
- python - 如何使用 python / json 中的输入在数据之间插入数据?
- java - 单击 java 按钮时执行 MySql 查询
- c# - 如何在 C# 中随机化文本?
- ionic3 - ionic 3 运行时错误:t.resolve 不是函数
- python - 如何获取频道的会员电报
- api - 如何使用 Cirium API 计算航线距离
- flutter - Flutter Streambuilder 映射到 List 对象