मैं जावा 8 स्ट्रीम के साथ दो मानचित्र मर्ज करना चाहते हैं:नक्शा <स्ट्रिंग, सूची <String> जावा मर्ज 8 स्ट्रीम
Map<String, List<String>> mapGlobal = new HashMap<String, List<String>>();
Map<String, List<String>> mapAdded = new HashMap<String, List<String>>();
मैं इस कार्यान्वयन का उपयोग करने का प्रयास करें:
mapGlobal = Stream.of(mapGlobal, mapAdded)
.flatMap(m -> m.entrySet().stream())
.collect(Collectors.groupingBy(Map.Entry::getKey,
Collectors.mapping(Map.Entry::getValue,
Collectors.toList())
));
हालांकि, इस कार्यान्वयन
Map<String, List<Object>>
: केवल की तरह एक परिणाम बनाने यदि mapGlobal
में एक कुंजी निहित नहीं है, तो इसे स्ट्रिंग की इसी सूची के साथ एक नई कुंजी के रूप में जोड़ा जाएगा। यदि कुंजी mapGlobal
और mapAdded
में डुप्लिकेट की गई है, तो मानों की दोनों सूची मर्ज हो जाएगी: A = {1, 3, 5, 7}
और B = {1, 2, 4, 6}
फिर A ∪ B = {1, 2, 3, 4, 5, 6, 7}
।
यह कार्यान्वयन स्ट्रीम संग्रह में सुधारों का उपयोग नहीं करेगा। दोनों नक्शे विशाल हो सकते हैं तो मैं समानांतरस्ट्रीम() जैसे कुछ का उपयोग करना चाहता हूं। क्या यह संभव है। – ypriverol
@ypriverol हाँ आप कर सकते हैं, मैं इसके साथ संपादित किया। – Tunaki
जब तक 'mapGlobal' एक' ConcurrentMap' नहीं है, इसे समांतर धारा के अंदर से म्यूट करना सुरक्षित नहीं है। – Misha