gpt4 book ai didi

java - 将ArrayList数据以给定格式存储到Object中

转载 作者:行者123 更新时间:2023-12-01 16:42:32 25 4
gpt4 key购买 nike

CompanyData 类包含变量

List<Division> Divisions

除法类包含变量。

String Id,String Name,List<SubD> subD

SubD 类包含

String subId,String subName

下面的方法打印列表

List<Info> dataList = daoImpl.getData(requestId);

例如:[{"Id":01,"Name":XYZ,"subId":"123","subName":"ABC"},{"Id":01,"Name":XYZ,"subId":"456","subName":"DEF"}]

我正在使用 foreach 循环迭代列表:

List<Division> divisionsList = new ArrayList<>();

CompanyData companydata = new ComapanyData();

dataList.stream().forEach(e -> {
Division divisions = new Division();
List<SubD> subList = new ArrayList<>();
SubD subd = new SubD();
divisions.setId(e.get_id());
divisions.setName(e.get_name());
subd.setSubId(e.getSub_id());
subd.setSubName(e.getSub_name());
subList.add(subd);
divisions.setSubD(subList);
divisionsList.add(divisions);
});

上面的代码按以下格式打印数据:

      "divisions": [
{
"Id": "01",
"Name": "XYZ",
"sub": [
{
"subId": "123",
"subName": "ABC"
}
]
},
{
"Id": "01",
"Name": "XYZ",
"sub": [
{
"subId": "456",
"subName": "DEF"
}
]
}
]

但是有没有办法以下面的格式打印数据如果 Id 相同,则应将其打印在同一子列表中。

    divisions": [
{
"Id": "01",
"Name": "XYZ",
"sub": [
{
"subId": "123",
"subName": "ABC"
},
{
"subId": "456",
"subName": "DEF"
}
]
}
]

最佳答案

您缺少hashcodeequals方法。

您无法直接识别您的列表是否已包含该部门。

将以下内容添加到您的 Division 中类。

 @Override 
public boolean equals(Object o) {
if (this == o)
return true;
if (o == null || getClass() != o.getClass())
return false;

Division div = (Division) o;

return id != null ? s.equals(div.id) : div.id == null;
}


@Override
public int hashCode() {
return id != null ? id.hashCode() : 0;
}

Refer了解更多信息

还有一件事:

如果你正在做List<SubD> subList = new ArrayList<>();内循环,这是错误的。你应该有getter, setter列表并使用它向其中添加项目。

类似 if sublistdivision对象为空,创建一个列表并向其中添加项目。否则向其中添加项目。

为了避免重复值,您需要执行 same for SubD类也。

关于java - 将ArrayList数据以给定格式存储到Object中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61835499/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com