मैंने लूप के लिए घोंसला किया है जिसे मुझे घोषणात्मक कोड में कनवर्ट करने की आवश्यकता है।नेस्टेड लूप को जावा 8 स्ट्रीम में कनवर्ट करना
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;
}
}
मैं इसे 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;
संपादित किया है, मुझे आपका उत्तर और भी पसंद है (मैं जटिल होने के बारे में सोच रहा था) – griFlo
और मैं उस लंबे समय तक धाराओं का उपयोग नहीं कर रहा हूं। लेकिन एक समानांतर धारा इसे (ज्यादा?) तेज नहीं करेगा? – griFlo
@griFlo मुझे नहीं पता, मैंने कल java8 को देखना शुरू कर दिया :) – user902383