के साथ नेस्टेड लूप के लिए जावा लैम्ब्डा अभिव्यक्ति मैं लैम्ब्डा अभिव्यक्तियों के लिए नया हूं और निम्नलिखित कोड को लैम्ब्डा समकक्ष को कम करने के लिए उनका उपयोग करने की कोशिश कर रहा हूं। मैंने कम और फ्लैटमैप और साथ ही साथ कई अन्य चीजों को देखा है, लेकिन मुझे स्पष्ट रूप से कुछ याद आ रहा है क्योंकि जो भी मैं कोशिश करता हूं वह या तो वाक्य रचनात्मक रूप से गलत है या मेरे पास जो चाहिए वह मेरा संदर्भ नहीं है।सशर्त
मुझे संग्रह में अन्य सभी तत्वों के खिलाफ प्रत्येक तत्व का विश्लेषण करने की आवश्यकता है। मैंने कोड किया कि एक सशर्त के साथ नेस्टेड loops के रूप में। एक बार गैर-मेल खाने वाले तत्वों की पहचान हो जाने के बाद, दोनों तत्वों का उपयोग करके गणना की जाती है। अंत में, मैं प्रत्येक तुलनात्मक गणना के लिए परिणामों का संग्रह चाहता हूं।
तो, यहाँ मूल कोड है:
final List<Element> updated = new ArrayList<>(elements.size());
for (final Element first : elements) {
Attribute newAttribute = first.getAttribute();
for (final Element second : elements) {
if (!first.equals(second)) {
newAttribute = newAttribute.add(computeChange(first, second));
}
}
final Element newElement = new Element(first.getEntry(), newAttribute, first.getValue());
updated.add(newElement);
}
फिर, मैं लैम्ब्डा भाव, जिनमें से सबसे सरल है के कई रूपों की कोशिश की:
elements.parallelStream()
.map(first -> new Element(first.getEntry(), first.getAttribute().add(
computeChange(first, second)), first
.getValue())).collect(Collectors.toList()));
जाहिर है, यह गलत है क्योंकि वहां कोई मेरे लिए उपलब्ध दूसरे के संदर्भ और दूसरी स्थिति के लिए कोई शर्त/फ़िल्टर नहीं है।
मैं इस नेस्टेड लूप को लैंडडा अभिव्यक्ति में संग्रह को सशर्त लौटने के साथ कैसे कम करूं?
यहां कोई भी सहायता की सराहना की जाती है।
यह कठिन है क्योंकि आपके 'newAttribute = newAttribute.add (...)' अपडेट नहीं चलाने योग्य हैं। यह आसान होगा यदि आप सभी 'computeChange' परिणामों को एकत्र कर सकते हैं और फिर उस योग से' विशेषता '(या' एलिमेंट') बना सकते हैं। –
मैं इसे छोड़ दूंगा जैसा कि यह है। –
'गणना करें' वापसी क्या करती है? एक 'तत्व', 'विशेषता', या एक संख्या? –