最佳答案
我只是在使用 List
及其 stream()
方法时遇到了一个问题。虽然我知道 怎么做使用它们,但我不太确定 什么时候使用它们。
For example, I have a list, containing various paths to different locations. Now, I'd like to check whether a single, given path contains any of the paths specified in the list. I'd like to return a boolean
based on whether or not the condition was met.
当然,这本身并不是一项艰巨的任务。但是我不知道是否应该使用流,或者使用 for (- each)循环。
名单
private static final List<String> EXCLUDE_PATHS = Arrays.asList(
"my/path/one",
"my/path/two"
);
Example using Stream:
private boolean isExcluded(String path) {
return EXCLUDE_PATHS.stream()
.map(String::toLowerCase)
.filter(path::contains)
.collect(Collectors.toList())
.size() > 0;
}
例如使用 for-each 循环:
private boolean isExcluded(String path){
for (String excludePath : EXCLUDE_PATHS) {
if (path.contains(excludePath.toLowerCase())) {
return true;
}
}
return false;
}
请注意,path
参数始终是 小写。
我的第一个猜测是 for-each 方法更快,因为如果满足条件,循环将立即返回。而流仍将循环遍历所有列表条目以完成筛选。
我的假设正确吗? 如果正确,那么我会使用 为什么(或者更确切地说是 什么时候)吗?