Ben Map<A, Map<B, C>>
var ve Java akışları kullanarak ondan Map<B, List<C>>
almak istediğiniz anahtar iç harita göre gruplandırılmış olsun.Java Akışları: Değerler
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));
}
beklediğim Ne:
flatMap
birStream
Map.Entry<B, C>
collect(Collectors.groupingBy(...))
Map.Entry<B, C>
uygulanan veB
döndürür işlevi alır ait verir, şöylebunu yapmaya çalışacağım Böylece
C
'un değerleriniList<C>
içine toplar.
Ama anlamıyla, derleme değil:
Olmayan statik yöntem son satırında
Map.Entry::getKey
statik bir bağlamda
başvurulan edilemez.
birisi yanlış ya İstediğimi elde etmek için doğru yolu nedir nedir açıklayabilir misiniz?
Olası yinelenen: http://stackoverflow.com/questions/29373026/how-to-get-all-values-from-the-inner-maps-of-a-map-using-a-common -key –
@ShiladittyaChakraborty, aslında, bunun beklenen yolunun neden işe yaramadığını soruyorum. Ayrıca, görev, başvurduğunuz sorudan biraz farklı. – hotkey