Tôi khá chắc chắn điều này là không thể trong một dòng, nhưng tôi chỉ muốn kiểm tra:Java Luồng: Tổ chức một bộ sưu tập thành một bản đồ và chọn nhỏ nhất chính
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());
Về cơ bản tôi đang thu thập tất cả phụ tùng các mục vào bản đồ trong đó khóa là số lượng availableStock và giá trị là danh sách tất cả các tiện ích có số lượng đó (vì nhiều tiện ích có thể có cùng giá trị). Khi tôi có bản đồ đó, tôi muốn chọn giá trị của bản đồ tương ứng với khóa nhỏ nhất. Bước trung gian của việc tạo Bản đồ là không cần thiết, nó chỉ là cách duy nhất tôi có thể nghĩ đến để làm điều này.
Ah- TreeMap. Tôi quên mất lớp đó vì đã lâu rồi tôi phải sử dụng nó. Cảm ơn! – IcedDante
Nếu bạn muốn nhồi nhét mọi thứ vào một luồng, bạn cũng có thể thực hiện 'Bộ sưu tập. Thu thập và Sau đó (Collectors.groupingBy (...), x -> x.firstEntry(). GetValue())' – user140547