मैं जावा 8 के साथ शुद्ध फ़ंक्शन लिखना चाहता था जो एक संग्रह के रूप में संग्रह लेता है, उस संग्रह के प्रत्येक ऑब्जेक्ट में कुछ परिवर्तन लागू करता है और अद्यतन के बाद एक नया संग्रह देता है। मैं एफपी सिद्धांतों का पालन करना चाहता हूं इसलिए मैं एक तर्क के रूप में पारित संग्रह को अद्यतन/संशोधित नहीं करना चाहता हूं।जावा 8 स्ट्रीम तत्वों को संशोधित करें
क्या स्ट्रीम एपीआई के साथ पहले मूल संग्रह की एक प्रति बनाये बिना और फिर लूप के लिए प्रत्येक या 'सामान्य' के लिए उपयोग किए बिना ऐसा करने का कोई तरीका है? नीचे
नमूना वस्तु और मान की सुविधा देता है कि मैं वस्तु संपत्ति से एक के लिए एक पाठ संलग्न करना चाहते हैं:
public class SampleDTO {
private String text;
}
तो मैं नीचे के समान कुछ करना चाहता हूँ, लेकिन संग्रह को संशोधित किए बिना। मान लीजिए "सूची" एक List<SampleDTO>
है।
list.forEach(s -> {
s.setText(s.getText()+"xxx");
});
मैं कहूंगा कि यह यहां कार्यात्मक प्रोग्रामिंग के सिद्धांत के खिलाफ थोड़ा सा है। विचार राज्य को विचलित नहीं करना है, लेकिन फ़ंक्शन के उत्पाद के रूप में नया राज्य बनाएं। यही कारण है कि, मूल सूची को म्यूट करने के बजाय, आपको एक नई सूची बनाने के लिए जावा स्ट्रीम एपीआई द्वारा प्रदान किए गए 'मानचित्र' फ़ंक्शन का उपयोग करना चाहिए। – christopher