Как получить значения из foreach и вернуть то же, что и массив в Java?

#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 . Попробуйте отладить его.