我有两个对象列表。 Person
和PurchaseOrder
。Java 8:通过编号合并两个对象列表
Person
有姓名,年龄,身份证等
PurchaseOrder
有PERSONID(FK人ID),时间戳,金额等
使用Java 8,我如何才能购买的平均人的年龄的订单金额< 18?
List<Person> personList = Arrays.asList(person);
List<PurchaseOrder> purchaseOrderList = Arrays.asList(purchaseOrders);
List<Person> underAgePerson = personList.stream()
.filter(p -> p.getAge < 18)
.collect(Collectors.toList());
// TODO:
purchaseOrderList.stream()
.forEach(o1 -> underAgePerson.stream()
.filter(o2 -> o1.getPersonId() == o2.getId()));
purchaseOrderList.stream().mapToDouble(o2 -> Long.valueOf(o2.getAmount())).average();
我看你找到了答案,但我只是好奇的东西。你在计算平均值是什么?金额数量的总和肯定是平均值,但每个金额的平均值是多少?你不想要像每个人的平均金额? –
我刚刚尝试了Java 8,并且被困在如何合并两个列表中。 – sophie