2015-03-23 27 views
8

वहाँ एक वर्ग (SomeOrders) है का उपयोग कर HashMap पॉप्युलेट करने के लिए कैसे, जैसे Id, Summary, राशि .. आदि आवश्यकता Id कुंजी के रूप में इकट्ठा करने के लिए और SomeOrder वस्तुओं की सूची से HashMap को Summary मूल्यों कुछ खाने हैं।लैम्ब्डा अभिव्यक्ति

से पहले जावा 8 में कोड:

List<SomeOrder> orders = getOrders(); 
Map<String, String> map = new HashMap<>(); 
for (SomeOrder order : orders) { 
    map.put(order.getId(), order.getSummary()); 
} 

कैसे जावा 8 में लैम्ब्डा अभिव्यक्ति के साथ एक ही प्राप्त करने के लिए?

+1

के संभावित डुप्लिकेट [जावा: कैसे मानचित्र सूची कन्वर्ट करने के लिए] (http://stackoverflow.com/questions/4138364/java-how -to-convert-list-to-map) –

+1

हां, लगभग वही। http://stackoverflow.com/questions/4138364/java-how-to-convert-list-to-map लेकिन ऊपर सामान्य रूप से सामान्य रूप से पूछा जाता है, उस उत्तर से लैम्ब्डा अभिव्यक्ति के साथ मिल सकता है। किसी भी तरह मुझे सूचित करने के लिए धन्यवाद। –

+0

* लैम्ब्डा अभिव्यक्ति * और * स्ट्रीम कार्यात्मक संचालन * के बीच भ्रमित न हों। मुझे लगता है कि आप नीचे दिए गए उत्तर के रूप में * कार्यात्मक संचालन * के लिए उत्तर प्राप्त करना चाहते हैं। – Alex

उत्तर

19

उपयोग Collectors.toMap:

orders.stream().collect(Collectors.toMap(SomeOrder::getID, SomeOrder::getSummary)); 

या

orders.stream().collect(Collectors.toMap(o -> o.getID(), o -> o.getSummary())); 
+0

क्या होगा अगर ऑर्डर सूची में डुप्लीकेट हो और मानचित्र में आदेश सारांश एकत्र करने के लिए सूची होनी चाहिए? सूची <> मानचित्र <स्ट्रिंग, सूची > – prime

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