Sto cercando di estrarre e contare il numero di diversi elementi nei valori di una mappa. Il fatto è che non è solo una mappa, ma molti di loro e devono essere ottenuti da un elenco di mappe.Java Stream. Estrazione di valori distinti di più mappe
In particolare, ho una classe Tournament
con un membro List<Event> event
. Un event
ha un membro Map<Localization, Set<Timeslot>> unavailableLocalizations
. Vorrei contare le differenze per tutti quei valori di timeslot.
Finora sono riuscito a contare i distinti in un solo mappa come questa:
event.getUnavailableLocalizations().values().stream().distinct().count()
Ma quello che non riesco a capire è come fare per tutte le mappe invece che per uno solo.
Suppongo che avrei bisogno di un modo per prendere i valori di ogni evento della mappa e mettere tutto questo nello stream, quindi il resto sarebbe proprio come ho fatto io.
io non sono sicuro se la freschezza di metodo di riferimento è abbastanza alto per giustificare l'uso '.map (evento :: getUnavailableLocalizations) MAP (Mappa :: valori) .flatMap (Collection :: stream) 'invece di' .flatMap (event -> event.getUnavailableLocalizations(). values (). stream()) '. Quest'ultimo rende più facile riconoscere il passaggio mancante dall'approccio dell'OP alla soluzione finale. – Holger