java - 根据索引位置或 id 合并数组元素
问题描述
我有一个从数据库中获取的列表数组。我想创建一个新列表,其中数组中的所有元素按索引位置或 id 分组。
这是我正在使用的数组:
[
{
"content": "Content A1",
"id": 1
},
{
"content": "Content A2",
"id": 2
},
{
"content": "Content A3",
"id": 3
},
{
"content": "Content A4",
"id": 4
},
{
"content": "Content A5",
"id": 5
}
]
[
{
"content": "Content B1",
"id": 1
},
{
"content": "Content B2",
"id": 2
},
{
"content": "Content B3",
"id": 3
},
{
"content": "Content B4",
"id": 4
},
{
"content": "Content B5",
"id": 5
}
]
[
{
"content": "Content C1",
"id": 1
},
{
"content": "Content C2",
"id": 2
},
{
"content": "Content C3",
"id": 3
},
{
"content": "Content C4",
"id": 4
},
{
"content": "Content C5",
"id": 5
}
]
这就是我希望新 List 数组的样子:
[
{
"content": {"Content A1","Content B1","Content C1"}
"id": 1
},
{
"content": {"Content A2", "Content B2", "Content C2"}
"id": 2
},
{
"content": {"Content A3","Content B3","Content C3"}
"id": 3
},
{
"content": {"Content A4","Content B4","Content C4"}
"id": 4
},
{
"content": {"Content A5","Content B5","Content C5"}
"id": 5
}
]
我试过这段代码,但它只返回最后一个对象:
List<String> contentArray = new ArrayList<>();
for (int i = 0; i < b.listDetail.size(); i++) {
int finalI = i;
contentArray = listResource.stream()
.map(a -> a.listDetail.get(finalI).content)
.collect(Collectors.toList());
}
System.out.println(contentArray);
解决方案
您几乎完成了,只需要将 contentArray 存储在所有索引的列表中。
List<List<String>> res = new ArrayList<>();
for (int i = 0; i < b.listDetail.size(); i++) {
int finalI = i;
List<String> contentArray = listResource.stream()
.map(a -> a.listDetail.get(finalI).content)
.collect(Collectors.toList());
res.add(contentArray); // store all contents for a index in list
}
id
您可以使用and为您的响应创建一个类,contents
并在循环内部构造并添加到列表中。
推荐阅读
- php - 方法 ResetPasswordController::reset 不存在
- java - 使用 orderByChild 后得到一个孩子
- python - Python Multiprocessing 不允许在创建进程后在主进程中打印
- php - session_set_cookie_params() 不能与 session_set_save_handler() 一起使用
- html - 页脚不在正确的位置
- amazon-web-services - 为 Amazon MQ 启用 JMX
- html - 按表单上的提交按钮转到同一页面
- javascript - TypeORM:使用自定义属性查询多对多
- jmeter - 非 HTTP 响应代码:java.net.SocketTimeoutException & 非 HTTP 响应消息:读取超时
- angular - 从另一个组件调用表单的值