Заполнить список внутри списка с условиями Java - PullRequest
0 голосов
/ 17 января 2020

Я пытаюсь заполнить List<Object>, который имеет в качестве атрибута другой 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
}

Меня заполняют List<Student> и List<StudentDetail> из другого процесса, и я хочу добиться того, чтобы объединить оба списка в мой класс Response, но с этими конкретными условиями

Чтобы заполнить List<StudentDetail>

  • Student.initials должны быть "a"
  • Student.id = StudentDetail.id

Это то, что я хочу достичь.

{
  "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"
        }
      ]
    }
  ]
}

1 Ответ

1 голос
/ 17 января 2020

Вот код. Я предполагаю populatedStudentList и populatedStudentDetail в качестве заданных объектов, которые были заполнены в какой-то другой части кода, как вы упомянули.

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 но я попытался воспроизвести желаемый результат самым простым c способом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...