Java List1<通货code,list<dto2> dto2<受渡日,残金额>,最后输出受渡日相同,通货相同的数据
时间: 2024-03-20 08:43:30 浏览: 18
好的,您的问题是关于Java的List和DTO的操作,您可以使用以下代码来实现您的需求:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
// 创建List和DTO对象
List<DTO1> list = new ArrayList<>();
DTO1 dto1_1 = new DTO1("code1", new DTO2("2022-01-01", 100));
DTO1 dto1_2 = new DTO1("code1", new DTO2("2022-01-02", 200));
DTO1 dto1_3 = new DTO1("code2", new DTO2("2022-02-01", 300));
DTO1 dto1_4 = new DTO1("code2", new DTO2("2022-02-02", 400));
list.add(dto1_1);
list.add(dto1_2);
list.add(dto1_3);
list.add(dto1_4);
// 创建Map对象,用于存储结果数据
Map<String, Map<String, List<Integer>>> resultMap = new HashMap<>();
// 遍历List对象
for (DTO1 dto1 : list) {
String code = dto1.getCode();
String date = dto1.getDto2().getDate();
int amount = dto1.getDto2().getAmount();
// 判断Map中是否已有该通货的数据
if (resultMap.containsKey(code)) {
Map<String, List<Integer>> innerMap = resultMap.get(code);
// 判断内部Map中是否已有该受渡日的数据
if (innerMap.containsKey(date)) {
List<Integer> amountList = innerMap.get(date);
amountList.add(amount);
} else {
List<Integer> amountList = new ArrayList<>();
amountList.add(amount);
innerMap.put(date, amountList);
}
} else {
Map<String, List<Integer>> innerMap = new HashMap<>();
List<Integer> amountList = new ArrayList<>();
amountList.add(amount);
innerMap.put(date, amountList);
resultMap.put(code, innerMap);
}
}
// 输出结果
for (String code : resultMap.keySet()) {
Map<String, List<Integer>> innerMap = resultMap.get(code);
for (String date : innerMap.keySet()) {
List<Integer> amountList = innerMap.get(date);
System.out.println("code: " + code + ", date: " + date + ", amount: " + amountList);
}
}
}
}
class DTO1 {
private String code;
private DTO2 dto2;
public DTO1(String code, DTO2 dto2) {
this.code = code;
this.dto2 = dto2;
}
public String getCode() {
return code;
}
public DTO2 getDto2() {
return dto2;
}
}
class DTO2 {
private String date;
private int amount;
public DTO2(String date, int amount) {
this.date = date;
this.amount = amount;
}
public String getDate() {
return date;
}
public int getAmount() {
return amount;
}
}
```
这段代码中,我们首先定义了两个DTO类,DTO1包含通货code和一个DTO2对象,DTO2包含受渡日和残金额。然后,我们在List中添加了一些DTO1对象,这些对象包含不同的通货code和不同的受渡日和残金额。
接下来,我们创建了一个Map对象,用于存储结果数据。在遍历List对象时,我们将每个DTO1对象中的数据逐一提取出来,并根据通货code和受渡日将其存储到Map对象中。最后,我们遍历Map对象,输出存储的结果数据。
需要注意的是,这段代码中的输出结果并没有按照受渡日相同、通货相同的顺序输出,如果您需要按照这个顺序输出,可以在遍历Map对象时进行一些排序操作。