2016-10-16 10 views
6

मैं वस्तुओं एक की एक सूची है पर कलेक्ट नेस्ट चला सकता हूँ, एक एक संपत्ति बुलाया पता है जो एक सड़क का नाम है है सड़क के नाम। एक स्तर का संग्रह धाराओं से काफी काम करता है लेकिन कोड की एक पंक्ति का उपयोग करके मैं नेस्टेड स्ट्रिंग कैसे प्राप्त करूं।मैं कैसे जावा 8 धारा

तो वस्तु एक से पतों की सूची प्राप्त करने के लिए मैं यह कर सकता:

listOfObjectsA.stream().map(a::getAddress).collect(Collectors.toList()); 

मेरे परम लक्ष्य सड़क के नाम की सूची प्राप्त करने के लिए है, तो मैं एक दूसरे स्तर संग्रह lambdas का उपयोग कर यह पता लगाने में सक्षम नहीं हूँ।

मुझे सटीक उदाहरण नहीं मिल सका जो मैं ढूंढ रहा था। क्या कोई मेरी मदद कर सकता है।

+5

भूलें कि आप एक लैम्ब्डा अभिव्यक्ति का भी उपयोग कर सकते हैं: '.map (a -> a.getAddress() .StreetStreetame()) –

+0

@AlexisC। हाँ जो उत्तर के साथ भी काम करता है। धन्यवाद –

उत्तर

6

आप बस एक और map आपरेशन श्रृंखला सड़क के नाम प्राप्त करने के लिए कर सकते हैं:

listOfObjectsA 
.stream() 
.map(a::getAddress) 
.map(a -> a.getStreetName()) // or a::getStreetName 
.collect(Collectors.toList()); 

पहले mapAddress वस्तुओं में अपने वस्तुओं को बदल देती है, अगले map उन Address वस्तुओं लेता है और उन्हें में परिवर्तित हो, जो तब कर रहे हैं कलेक्टर द्वारा एकत्रित।

धारा संचालन एक पाइपलाइन बनाते हैं, इसलिए टर्मिनल ऑपरेशंस (इस मामले में, collect ऑपरेशन) से पहले आपको जितनी आवश्यकता हो उतनी परिचालन हो सकती है।

संबंधित मुद्दे