public class Test {
public static void main(String[] args) {
List<Data> datas = getByDao();
// 按照主键accl分组
Map<String, List<Data>> dataMap = new HashMap<>();
for (Data data : datas) {
List<Data> dataList = dataMap.get(data.getAccl());
if (dataList == null) {
dataList = new ArrayList<>();
dataMap.put(data.getAccl(), dataList);
}
dataList.add(data);
}
// 构造想要的Java结构
List<DataVO> dataVOS = new ArrayList<>();
for (Map.Entry<String, List<Data>> entry : dataMap.entrySet()) {
DataVO dataVO = new DataVO();
List<Data> groupDatas = entry.getValue();
dataVO.setAccl(groupDatas.get(0).getAccl());
dataVO.setDesc(groupDatas.get(0).getDesc());
List<String> names = new ArrayList<>();
for (Data data : groupDatas) {
names.add(data.getName());
}
dataVO.setList02(names);
dataVOS.add(dataVO);
}
System.out.println(dataVOS);
}
private static List<Data> getByDao() {
List<Data> datas = new ArrayList<>();
Data data1 = new Data("1", "1", "1");
datas.add(data1);
Data data2 = new Data("1", "1", "2");
datas.add(data2);
Data data3 = new Data("2", "1", "1");
datas.add(data3);
return datas;
}
}
@AllArgsConstructor
@lombok.Data
class Data {
String accl;
String desc;
String name;
}
@lombok.Data
class DataVO {
String accl;
String desc;
List<String> list02;
}
效果:
[
DataVO(accl=1, desc=1, list02=[1, 2]),
DataVO(accl=2, desc=1, list02=[1])
]