Voglio prendere un set di oggetti (ObjectInstance
in questo caso) e desidero raggrupparli per una proprietà e disporre gli elenchi risultanti in un altro.Come raggruppare un insieme di oggetti in liste ordinate usando java 8?
Set<ObjectInstance> beans = server.queryMBeans(null, null);
Map<String, List<String>> beansByDomain = beans.stream()
.collect(groupingBy((ObjectInstance oi) -> oi.getObjectName().getDomain(),
mapping((ObjectInstance oi) -> oi.getObjectName().getCanonicalKeyPropertyListString(),
toList())));
L'espressione di cui sopra crea la struttura di dati corretto: un Map
in cui le chiavi sono i domini dei ObjectInstance
oggetti, ed i valori sono elenchi di liste di proprietà. Quello che voglio è ora ordinare le liste, per assicurarsi che siano in ordine alfabetico. C'è un modo per farlo nella stessa espressione?
Un'idea sarebbe quella di aggiungere .sort()
subito dopo .stream()
, ma è davvero garantito che funzioni?
Sì, la seconda soluzione sembra molto migliore dal punto di vista della leggibilità. – KumarM