java - 如何在 java 中组合具有相同属性值的对象的 2 个数组列表

标签 java

我有 2 个数组列表,如下所示。 一个数组包含与 idnamecity 映射的学生信息。另一个数组包含与 id、marksgrade 映射的标记详细信息。目标是将这些元素中的每一个相互比较,并根据 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/

相关文章:

java - 在 Debug模式下运行时不重用 Gradle 守护进程(在 IntelliJ IDEA 中)

java - 从 Spring 查找 activeMQ 目的地

java - jaudiotagger 获取 mp3 频率

java - Java 程序中的 Unicode 转义行为

java - nifi自定义处理器中的 session 未关闭异常

java - 每 5 秒自动执行一次消息

java - 将 GWT xml.client.Document 转换为 XML 字符串

java - 最好的方法,如何在字典中查找单词

java - 如何在第一个对话框上调用removeView()以显示第2个对话框

java - 在 GWT super 开发模式下调试?