作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
主要对象:
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/
我是一名优秀的程序员,十分优秀!