#java #spring #spring-mvc #arraylist
#java #spring #spring-mvc #arraylist
Вопрос:
У меня есть POJO, заполненный списком элементов в контроллере (после отправки rest ajax). Это структура модели, которая заполняется:
public class AllNamesDto {
private List<Long> id;
private List<String> firstName;
private List<String> LastName;
private List<Boolean> manualSubmit;
private List<String> program;
//getters setters
}
Я хотел бы извлечь все элементы списка из приведенной выше модели и сохранить их по отдельности в списке моделей, например, в следующей модели:
public class AllNamesDtoList {
private long id;
private String firstName;
private String LastName;
private Boolean manualSubmit;
private String program;
//getters setters
}
Итак, что-то вроде
List<AllNamesDtoList> allNamesDtoList = new ArrayList<>();
allNameDtoList.add(AllNamesDto.items);
Я знаю, что синтаксис неверен, просто добавляю его, чтобы быстро показать, чего я пытаюсь достичь. Моя цель — создать правильный список элементов (поскольку я не мог найти способ правильно отправить СПИСОК через ajax, просто подсписок элементов в одном POJO) для повторения и сохранения в БД.
Любая помощь приветствуется!
Комментарии:
1. Вам нужно хотя бы что-то попробовать. Вам нужен цикл. На итерации eas вам нужно получить элемент каждого списка с текущим индексом, создать экземпляр AllNamesDtoList (который вообще не является списком и, вероятно, должен называться Person или что-то в этом роде).
2. имеет ли весь список
AllNamesDto
одинаковой длины?3. @Deadpool Все элементы
AllNamesDto
будут иметь одинаковую длину. Каждая запись представляет собой «строку» в форме.
Ответ №1:
Предполагая, что в списках порядок правильный и все они имеют одинаковый размер:
Сначала поместите конструктор с полями:
public AllNamesDtoList(long id, String firstName, String lastName, Boolean manualSubmit, String program) {
super();
this.id = id;
this.firstName = firstName;
LastName = lastName;
this.manualSubmit = manualSubmit;
this.program = program;
}
А затем мы берем размер одного из списков и создаем IntStream для итерации по индексам
List<AllNamesDtoList> allNamesDtoList = new ArrayList<>();
IntStream.range(0, id.size()).forEach(index -> allNamesDtoList.add(new AllNamesDtoList(id.get(index), firstName.get(index), LastName.get(index), manualSubmit.get(index), program.get(index))));
и список allNamesDtoList будет полным.
Комментарии:
1. Спасибо за предложения, я сейчас попробую. Я не уверен, что вы имеете в виду
ids.size())
в вашем примере, и как только я доберусьid.get(index)
, я нажму на ошибку. Он не знает, на что я ссылаюсь.2. Извините, что я вставил идентификаторы, я хотел добавить id, я просто беру один из ваших списков и смотрю на его размер. Я отредактировал эту часть id.size(), это похоже на то, что я поместил FirstName.size()
3. Когда я делаю это id.get(index), FirstName.get(index) … являются списками AllNamesDto. @SiriusBits
4. Спасибо за разъяснение. Для
ids.size()
. Это будет работать, только если я используюAllNamesDto.getId.size()
though. Но он все еще не находитid.get(index)
?5. id.get(index), FirstName.get(index) ….является AllNamesDto.getId.get(index), AllNamesDto.getFirstName.get(index)…