首页 > 解决方案 > 使用条件 Java 在列表中填充列表

问题描述

我正在尝试填充 aList<Object>作为属性 another List

这是场景。

第一个对象

public class Student {

    private String initials;
    private String id;
    private List<StudentDetail> listStudentDetail;

    //Setters and Getters

}

第二个对象

public class StudentDetail {

    private String id;
    private String name;

    //Setters and getters
}

我的最终java对象如下。

public class Response {

    private String code;
    private String message;
    private List<Student> listStudent;

    //Setters and getters
}

我从另一个进程中填充了 aList<Student>和 a List<StudentDetail>,我想要实现的是将这两个列表合并到我的Response类中,但具有这些特定条件

为了填补List<StudentDetail>

这些是我想要实现的。

{
  "code": "0",
  "message": "Succes",
  "listStudent": [
    {
      "initials": "a",
      "id": "104",
      "listStudentDetail": [
        {
          "id": "104",
          "name": "Kevin"
        }
      ]
    },
    {
      "initials": "b",
      "id": "100",
      "listStudentDetail": []
    },
    {
      "initials": "a",
      "id": "105",
      "listStudentDetail": [
        {
          "id": "105",
          "name": "Robert"
        }
      ]
    }
  ]
}

标签: javalistarraylist

解决方案


这是代码。
我假设populatedStudentListpopulatedStudentDetail作为已填充在您提到的代码的其他部分中的给定对象。

for (Student s in populatedStudentList){
    if (s.getInitials().compareTo('a') != 0){
        continue;
    }
    String findId = s.getId();
    List<StudentDetail> tempListStudentDetail = new ArrayList<>(); 
    for (StudentDetail d in populatedStudentDetail){
        if (d.getId().compareTo(findId) == 0){
             tempListStudentDetail.append(d);
        }
    }
    s.setListStudentDetail(tempListStudentDetail);
}

这可以使用 hashTables 以更节省内存的方式实现,但我尝试以最基本的方式重现所需的结果。


推荐阅读