Sono abbastanza sicuro che questo non è possibile in una sola riga, ma ho solo voluto verificare:Java Streams: organizzare una raccolta in una mappa e selezionare la più piccola chiave
List<WidgetItem> selectedItems = null;
Map<Integer, List<WidgetItem>> itemsByStockAvailable = WidgetItems.stream()
.collect(Collectors.groupingBy(WidgetItem::getAvailableStock));
selectedItems = itemsByStockAvailable.get(
itemsByStockAvailable.keySet().stream().sorted().findFirst().get());
Fondamentalmente sto raccogliendo tutti i widget di elementi in una mappa in cui la chiave è la quantità di StockStock e il valore è un elenco di tutti i widget che hanno quella quantità (poiché più widget potrebbero avere lo stesso valore). Una volta che ho quella mappa, vorrei selezionare il valore della mappa che corrisponde alla chiave più piccola. Il passaggio intermedio della creazione di una mappa non è necessario, è solo l'unico modo in cui potrei pensare di farlo.
Ah- TreeMap. Mi sono dimenticato di quella classe visto che è passato un po 'di tempo da quando dovevo usarla. Grazie! – IcedDante
Se si preferisce racchiudere tutto in un unico flusso, si potrebbe anche fare 'Collectors.collectingAndThen (Collectors.groupingBy (...), x -> x.firstEntry(). GetValue())' – user140547