我有 2 个数组列表,如下所示。
一个数组包含与 id
、name
和 city
映射的学生信息。另一个数组包含与 id、
marks 和
grade 映射的标记详细信息。目标是将这些元素中的每一个相互比较,并根据
ArrayList` 中的公共(public)字段 id 将它们组合起来。
student_details=[
{
"id": 1,
"name": "sam",
"city": "Chennai"
},
{
"id": 2,
"name": "peter",
"city": "Chennai"
}
]
student_grades=[
{
"id": 1,
"marks": 95,
"grade": "A"
},
{
"id": 2,
"marks":63,
"grade": "B"
}
]
结果应该如下所示。
[
{
"id": 1,
"name": "sam",
"city": "Chennai",
"marks": 95,
"grade": "A"
},
{
"id": 2,
"name": "peter",
"city": "Chennai",
"marks":63,
"grade": "B"
}
]
我使用下面的代码在 javascript 中实现了同样的效果。我如何在 Java 中实现它?
async mergeData(data1, data2, key) {
const result = data1.map(a =>
Object.assign({}, a,
data2.find(b => b[key] === a[key])
)
)
return result
}
最佳答案
如果您的数据包含的属性始终相同,那么最简单的方法是创建一个 ArrayList,然后在所有条目都添加到 ArrayList 后调用 toArrayMethod,否则您必须考虑 id 的不同情况不匹配需要大量代码来说明不同的数组大小。
然后您只需在给定的数组上迭代 2 个嵌套的 for 循环,如果 id 匹配,则使用 ArrayList 的 add 方法向您的 ArrayList 添加一个新条目。
另一个问题是你的数据实际上有什么对象类型,因为我不认为你可以在 java 中创建像 "attribute_name"= value
这样的对象对,所以你的输入是可能是您正在阅读的一些 json。您可以使用 gson 或其他库将您的 json 映射到 2 个 java 类,然后使用另一个第三类来获取组合数据。
另一种方法是自己使用 json 处理库将其映射到 java 类或某些数据结构(如 HashMap)。如果您不知道您的 Java 类将来会有哪些属性,则 HashMap 最有意义。
另一种方法是使用 json 处理库将对象从 json 映射到另一个 json,并使用 2 个 for 循环遍历 json 数组。
关于java - 如何在 java 中组合具有相同属性值的对象的 2 个数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70180053/