我在使用a List及其stream()方法时遇到了一个问题.虽然我知道如何使用它们,但我不确定何时使用它们.
例如,我有一个列表,包含到不同位置的各种路径.现在,我想检查一个给定路径是否包含列表中指定的任何路径.我想boolean根据条件是否得到满足返回.
当然,这本身并不是一项艰巨的任务.但我想知道我是应该使用流还是使用for(-each)循环.
列表
private static final List<String> EXCLUDE_PATHS = Arrays.asList(new String[]{
"my/path/one",
"my/path/two"
});
Run Code Online (Sandbox Code Playgroud)
示例 - 流
private boolean isExcluded(String path){
return EXCLUDE_PATHS.stream()
.map(String::toLowerCase)
.filter(path::contains)
.collect(Collectors.toList())
.size() > 0;
}
Run Code Online (Sandbox Code Playgroud)
示例 - For-Each循环
private boolean isExcluded(String path){
for (String excludePath : EXCLUDE_PATHS) {
if(path.contains(excludePath.toLowerCase())){
return true;
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
请注意,path参数始终为小写.
我的第一个猜测是for-each方法更快,因为如果条件满足,循环将立即返回.而流仍将循环遍历所有列表条目以完成过滤.
我的假设是否正确?如果是这样,为什么(或者更确切地说)何时使用stream()?