sid*_*ate 6 java for-loop java-8
我有以下嵌套for循环,我需要转换为声明代码.
for (String variable : variables ){
boolean validAttribute = false;
if(variable.equals(SOME_CONSTANT)){
validAttribute = true;
}
else {
for(String attrName: attrNames){
if(variableName.equals(attrName)){
validAttribute = true;
break;
}
}
}
if(!validAttribute){
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
我能够实现它如何使用flatMap.但是,在第一个不匹配的条目中,循环使用的早期似乎并不高效.还有其他更简单的方法吗?
(以下代码似乎很难理解)
List<String> inValidVariables = attrNames.stream().flatMap(attrName -> variableNames.stream()
.filter(variableName -> !variableName.equals(attrName) && !variableName.equals(SOME_CONSTANT)))
.collect(Collectors.toList());
return inValidVariables.size() ==0;
Run Code Online (Sandbox Code Playgroud)
就个人而言,我会这样解决这个问题
variables.stream().allMatch((item) -> item.equals(SOME_CONSTANT)
|| attrNames.contains(item));
Run Code Online (Sandbox Code Playgroud)
我认为流应该让你的任务更容易而不是更复杂,这就是为什么我没有将它用于内循环,因为你可以重构它.
这里是ideone的链接,您可以在其中运行这两种方法
| 归档时间: |
|
| 查看次数: |
1212 次 |
| 最近记录: |