मेरे पास Map<A, Map<B, C>>
है और मैं जावा स्ट्रीम का उपयोग करके Map<B, List<C>>
प्राप्त करना चाहता हूं।जावा स्ट्रीम: आंतरिक मानचित्र कुंजी द्वारा समूहित मान प्राप्त करें
public <A, B, C> Map<B, List<C>> groupsByInnerKey(Map<A, Map<B, C>> input) {
return input.values()
.stream()
.flatMap(it -> it.entrySet().stream())
.collect(Collectors.groupingBy(Map.Entry::getKey));
}
मैं क्या उम्मीद:
मैं इस प्रकार के रूप में यह करने की कोशिश
flatMap
केStream
Map.Entry<B, C>
collect(Collectors.groupingBy(...))
समारोह जोMap.Entry<B, C>
के लिए आवेदन किया औरB
देता है लेता है देता है, इस प्रकार यहC
के मानList<C>
में एकत्र करता है।
लेकिन यह संकलन नहीं है, सचमुच:
गैर स्थिर विधि अंतिम पंक्ति में
Map.Entry::getKey
पर एक स्थिर संदर्भ
से संदर्भित नहीं किया जा सकता।
क्या कोई यह बता सकता है कि क्या गलत है या मैं क्या हासिल करना चाहता हूं?
संभावित डुप्लिकेट: http://stackoverflow.com/questions/29373026/how-to-get-all-values-from-the-inner-maps-of-a-map-using-a-common -key –
@ शिलादित्य चक्रवर्ती, असल में नहीं, मैं इस बारे में पूछ रहा हूं कि ऐसा करने का अपेक्षित तरीका क्यों काम नहीं करता है। साथ ही, कार्य आपके द्वारा संदर्भित प्रश्न से थोड़ा अलग है। – hotkey