gpt4 book ai didi

java - 可以使用流 api 重写以下循环,还是我徒劳无功?

转载 作者:行者123 更新时间:2023-12-01 13:09:52 25 4
gpt4 key购买 nike

主要对象:

public class Order {
private Long orderId;
...
private List<OrderAudit> auditList;
}

订单的Item对象

public class OrderAudit {
private Long orderId;
...
}

所有订单

List<Order> orderList = orderDao.getOrderList(request);

所有项目

List<OrderAudit> allAudits = orderDao.getAllAudits();

我尝试找到每个订单的所有审计并将此列表设置为有序。周期:

for (Order order : orderList) {
Long orderId = order.getOrderId();

List<OrderAudit> orderAuditList = allAudits.stream()
.filter(x-> x.getOrderId().equals(orderId))
.collect(Collectors.toList());
order.setAuditList(orderAuditList);
}

最佳答案

您可以使用 groupingBy创建 List<OrderAudit> 的 map 通过 orderId

Map<Long, List<OrderAudit>> orderAuditMap = allAudits.stream()
.collect(Collectors.groupingBy(OrderAudit::getOrderId));

如果你想保留 OrderAudit 的顺序

Map<Long, List<OrderAudit>> orderAuditMap = allAudits.stream()
.collect(Collectors.groupingBy(i -> i.getOrderId(), LinkedHashMap::new, Collectors.toList()));

然后得到List<OrderAudit>通过 orderId从 map 并使用 forEach() 按顺序设置

orderList.stream().forEach(e -> e.setAuditList(orderAuditMap.get(e.getOrderId())));

关于java - 可以使用流 api 重写以下循环,还是我徒劳无功?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61811432/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com