मैं if
और else
बयान है कि lambdas में विभिन्न कार्यों, को नेतृत्व और धाराओं के साथ जटिल तार्किक स्थिति का अनुवाद करने के लिए एक साफ रास्ता तलाश कर रहा हूँ अंदर अनुवाद जटिल सशर्त तर्क।नदियों और lambdas में एक पाश
मान लीजिए मैं इस कोड है:
List<OuterData> result = new LinkedList<>();
for (Outer outer : getOutersFromSomewhere()) {
OuterData outerData = new OuterData();
if (outer.isImportant()) {
doImportantAction(outer, outerData);
} else if (outer.isTrivial()) {
doTrivialAction(outer, outerData);
} else {
doDefaultAction(outer, outerData);
}
for (Inner inner : outer.getInners()) {
if (inner.mustBeIncluded()) {
InnerData innerData = new InnerData();
if (inner.meetsCondition1()) {
doAction1(inner, innerData, outer, outerData);
} else if (inner.meetsCondition2()) {
doAction2(inner, innerData, outer, outerData);
} else {
doDefaultAction(inner, innerData, outer, outerData);
}
outerData.add(innerData);
}
}
result.add(outerData);
}
return result;
यह वास्तविक कोड मेरे पास से सरल है। मुझे पता है कि इसे अनुकूलित और रिफैक्टर किया जा सकता है, यानी मैं आंतरिक for
को private
विधि में ले जा सकता हूं। मैं जानना चाहता हूं कि if
, else if
और else
भागों को स्ट्रीम और लैम्बडास का अनुवाद कैसे करना है।
मुझे पता है कि इस उदाहरण के कंकाल का अनुवाद कैसे करें। मैं List.stream()
, Stream.map()
, Stream.filter()
, Stream.collect()
और Stream.peek()
का उपयोग करता हूं। मेरी समस्या केवल सशर्त शाखाओं के साथ है। मैं यह अनुवाद कैसे कर सकता हूं?
हो सकता है कि आप अपने उदाहरण में कोड को सरल बना सकें। –
@ राउलगुई ओके मैं ऐसा करूँगा। धन्यवाद –
मुझे लगता है कि यदि आप सशर्त और कुछ के शरीर के साथ एक foreach के साथ कुछ अलग फिल्टर का उपयोग कर सकते हैं। –