【问题标题】:How to get Values from foreach and return the same as an Array in java?如何从 foreach 获取值并返回与 java 中的数组相同的值?
【发布时间】:2023-04-09 23:10:01
【问题描述】:

这是我的 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;
        }
    
    }

【问题讨论】:

  • forEach 是终端操作。如果你想从中收集一个集合,你应该map它。
  • 看看this。你已经有直播了。

标签: java spring spring-boot spring-mvc


【解决方案1】:

正如一些 cmets 建议的那样,您可以使用流来解决这个问题,因为您已经在使用它们了。

只需映射它,然后调用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

【讨论】:

  • 它没有帮助@Josip 编辑问题供您参考,请检查
  • 这可能意味着 saveData 导致某些项目出现异常,这意味着这些项目未添加到 ArrayList。尝试调试它。
猜你喜欢
  • 1970-01-01
  • 2012-08-25
  • 2013-05-06
  • 2020-08-11
  • 1970-01-01
  • 1970-01-01
  • 2017-04-15
  • 1970-01-01
  • 2014-12-18
相关资源
最近更新 更多