【发布时间】:2021-11-16 04:48:39
【问题描述】:
我有类似的java bean
class OrderDeatils {
Long orderId;
Long userId;
OrderInfo info;
\\Required getter/setter
}
class OrderInfo {
OffsetDateTime orderCreatedDate;
\\Required getter/setter
}
我有 List<OrderDeatils> 列表中的数据
orderId. userId. OrderInfo[orderCreatedDate].
1001. 123. 2015/07/07
1002. 124. 2015/08/07
1003. 125. 2015/09/07
1004. 123. 2015/08/07
如何,我可以删除基于 userId 的重复条目,并保留以下最小日期的数据:
orderId. userId. OrderInfo[orderCreatedDate].
1001. 123. 2015/07/07
1002. 124. 2015/08/07
1003. 125. 2015/09/07
应该返回整个 OrderDetils 对象的列表。
我试过了:
list.stream().collect(
Collectors.groupingBy(OrderDeatils::getUserId,
Collectors.collectingAndThen(
Collectors.reducing((OrderDeatils d1, OrderDeatils d2)
-> d1.getInfo.getOrderCreatedDate().isBefore(d2.getInfo.getOrderCreatedDate()) ? d1 : d2), Optional::get)));
但响应不如预期,我没有得到更新 List<OrderDeatils> 作为输出。
【问题讨论】:
标签: java list stream java-stream grouping