Ich habe folgende verschachtelte For-Schleifen, die ich in deklarativen Code konvertieren muss.Umwandlung von verschachtelten Schleifen in Java 8 Streams
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;
}
}
Ich bin in der Lage es etwas zu erreichen, wie die flatMap
verwenden. Aber scheint nicht effizient, da die frühere for-Schleife verwendet, um bei dem ersten nicht übereinstimmenden Eintrag zu brechen. Gibt es einen anderen einfacheren Weg?
(auch unter dem Code scheint zu verstehen, schwer)
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;
Ich mag Ihre Antwort noch mehr (ich dachte zu kompliziert) – griFlo
Und ich benutze die Streams API nicht so lange. Aber würde nicht ein paralleler Strom es (viel?) Schneller machen? – griFlo
@griFlo Ich weiß nicht, ich fing gestern an, java8 zu sehen :) – user902383