Ho Map<A, Map<B, C>>
e voglio ottenere Map<B, List<C>>
da esso utilizzando Java Stream.Java Stream: ottenere i valori raggruppati per chiave interna della mappa
cerco di farlo nel modo seguente:
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));
}
quello che mi aspetto:
flatMap
dà unStream
diMap.Entry<B, C>
collect(Collectors.groupingBy(...))
assume la funzione che viene applicata alMap.Entry<B, C>
e restituisceB
, quindi raccoglie i valori diC
inList<C>
.
Ma non si compila, letteralmente:
metodonon statico non è possibile fare riferimento da un contesto statico
al Map.Entry::getKey
nell'ultima riga.
Qualcuno può spiegare cosa c'è che non va o qual è il modo giusto per ottenere ciò che voglio?
Eventuali duplicati: http://stackoverflow.com/questions/29373026/how-to-get-all-values-from-the-inner-maps-of-a-map-using-a-common -key –
@ShiladittyaChakraborty, non in realtà, sto chiedendo perché il modo previsto per farlo non funziona. Inoltre, l'attività è leggermente diversa dalla domanda a cui fai riferimento. – hotkey