Java List1<通货code,list<dto2> dto2<受渡日,残金额>,最后输出受渡日相同,通货相同的数据合并加起来
时间: 2024-03-21 14:40:03 浏览: 51
java合并list方法代码实例
好的,我理解了你的问题。你可以使用Java 8中的Stream API来实现这个功能。这里是一个示例代码:
```java
// 假设你已经有了一个名为list的List对象
// 首先,将List按照通货code分组
Map<String, List<DTO1>> grouped = list.stream().collect(Collectors.groupingBy(DTO1::getCurrencyCode));
// 然后,对于每个通货code所对应的DTO1,将其转换为DTO2并按照受渡日进行分组,并将残金额累加
Map<String, Map<Date, BigDecimal>> result = grouped.entrySet().stream()
.collect(Collectors.toMap(Map.Entry::getKey, entry ->
entry.getValue().stream().flatMap(dto1 ->
dto1.getDto2List().stream().collect(Collectors.toMap(
DTO2::getDeliveryDate,
DTO2::getRemainingAmount,
BigDecimal::add))
).collect(Collectors.groupingBy(Map.Entry::getKey, Collectors.reducing(BigDecimal.ZERO, Map.Entry::getValue, BigDecimal::add)))));
// 最后,输出结果
result.entrySet().forEach(entry -> {
System.out.println("Currency Code: " + entry.getKey());
entry.getValue().entrySet().forEach(subEntry -> {
System.out.println("Delivery Date: " + subEntry.getKey() + ", Remaining Amount: " + subEntry.getValue());
});
});
```
当然,这只是一个示例代码,具体实现还需要根据你的数据结构和需求来进行调整。希望能对你有所帮助。
阅读全文