#java #spring #spring-boot #spring-mvc
#java #spring #spring-boot #spring-mvc
Вопрос:
Это мой цикл forEach , теперь я хочу использовать вывод для каждой строки и возвращать то же самое в массиве. любая помощь приветствуется. на данный момент я пробовал что-то подобное, например, предположим, что я ожидаю 2object от ответа, но я получаю только один объект, который является вторым объектом или последним объектом ,
public Validation save(Multipart file){
ArrayList<Item> dta = new ArrayList<>();
IntStream.range(0, data.size()).forEach(rowNo-> {
try {
Item item saveData(rowNo 2,data.get(rowNo),vlidation);
ret.add(item);
});
return dta;
}
}
Комментарии:
1.
forEach
это операция терминала. Если вам нужна коллекция из этого, вы должныmap
это сделать.2. Взгляните на это . У вас уже есть поток.
Ответ №1:
Как предполагалось в некоторых комментариях, вы могли бы решить эту проблему с помощью потоков, поскольку вы их уже используете.
Просто сопоставьте его, а затем вызовите collect(Collectors.toList())
, чтобы получить список.
IntStream.range(0, data.size()).map(rowNo-> {
try {
return saveData(rowNo 2,data.get(rowNo),vlidation);
} catch(Exception ex) {
..
}
}).collect(Collectors.toList());
Если вы не хотите использовать потоки, вы можете выполнить цикл и добавить текущий элемент в список:
ArrayList<Item> ret = new ArrayList<>;
IntStream.range(0, data.size()).forEach(rowNo-> {
try {
Item item = saveData(rowNo 2,data.get(rowNo),vlidation);
ret.add(item);
} catch(Exception ex) {
...
}
});
// ret is the list that you wanted
Комментарии:
1. Это не помогло @Josip отредактировал вопрос для вашего ответа, пожалуйста, проверьте
2. Вероятно, это означает, что SaveData вызвал исключение для некоторых элементов, что означает, что эти элементы не были добавлены в ArrayList . Попробуйте отладить его.