我正在处理以下 POJO:
@Getter
@AllArgsConstructor
public class Order {
private int quantity;
private Category category;
private LocalDate date;
//rest fields
}
我有一个这个对象的列表,我想要做的是我想找到月份(从date字段中提取)和类别(它是枚举类型),它具有最高的quantity. 我想用流来做,我做了很少的尝试,但现在我没有想法。你能帮我解决这个问题吗?
在我试图解决这种情况的虚拟尝试下面:
Optional<Entry<Month, Order>> result = orders.stream()
.collect(
Collectors.groupingBy(Order::getLocalDate, Collectors.maxBy(Comparator.comparingInt(Order::getQuantity))))
.entrySet()
.stream()
.collect(Collectors.toMap(e -> e.getKey().getMonth(), e -> e.getValue().get()))
.entrySet()
.stream()
.max(Entry.comparingByValue(Comparator.comparingInt(Order::getQuantity)));
例如,我们有以下数据列表:
List<Order> orders = Arrays.asList(
new Order(Category.HEADPHONES,3, LocalDate.of(2018, 2, 22)),
new Order(Category.HEADPHONES,6, LocalDate.of(2018, 2, 23)),
new Order(Category.NOTEBOOKS,8, LocalDate.of(2018, 2, 24)),
new Order(Category.NOTEBOOKS,4, LocalDate.of(2018, 3, 3)),
new Order(Category.NOTEBOOKS,1, LocalDate.of(2018, 3, 3)),
new Order(Category.PHONES,2, LocalDate.of(2018, 3,5)),
new Order(Category.PHONES,2, LocalDate.of(2018, 3,7))
);
我想玩流并接收结果(例如一些包含month, category,的元组quantity)。
在上述数据集中,数量值最高的月份 ( 9) 属于February类别HEADPHONES。
蝴蝶刀刀
陪伴而非守候
相关分类