stream
एपीआई का उपयोग करके नेस्टेड फोरैच लूप के साथ कैलकुलेट किया जा सकता है जहां प्रत्येक में फ़िल्टर की स्थिति होती है?नेस्टेड फ़ोरैच लूप के भीतर मूल्यों को कैसे समेटें?
//java7
Double sum = null;
for (FirstNode first : response.getFirstNodes()) {
if (first.isValid()) {
for (SndNnode snd : first.getSndNodes()) {
if (snd.getType() == NodeType.AMOUNT) {
sum += snd.getAmount();
break;
}
}
}
}
//java8
response.getFirstNodes().stream().filter(first -> first.isValid()).mapToDouble(???).sum();
मेरे SND foreach पाश होगा:
first.getSndNodes().stream().filter(snd -> snd.getType() == NodeType.AMOUNT).mapToDouble(snd -> snd.getAmount()).findFirst().sum();
कैसे मैं अब पहले में SND foreach पाश को एकीकृत कर सकता है, नेस्टेड सूचियों का एक वैश्विक राशि प्राप्त करने के लिए?
response.getFirstNodes()
.stream()
.filter (first -> first.isValid())
.flatMap (first -> first.getSndNodes().stream())
.filter(snd -> snd.getType() == NodeType.AMOUNT)
.mapToDouble(snd -> snd.getAmount())
.sum();
मुझे लगता है कि 'ब्रेक;' कथन अनावश्यक है –
यदि नहीं मिलता है 'getSndNodes()' वास्तव में बड़ी सूची देता है और मैं केवल पहला/केवल परिणाम प्राप्त करना चाहता हूं। लेकिन निश्चित रूप से यह वास्तव में केवल बहुत बड़ी सूचियों पर लागू होता है, और अधिकांश समय का कोई प्रभाव नहीं पड़ेगा। – membersound