我如何将for循环转换为java8样式,但仍跟踪索引并在循环中实例化新对象?

例如,我目前有一个街区,该街区几乎会查找[approve,disapprove ..]模式,并在修改被拒登的条目时过滤出已批准的一个。我的逻辑是按索引检查。代码如下:

List<Obj> ret = new ArrayList<>();
for (int i = 0; i < res.size() - 1; i++) {
     Obj curr = res.get(i);
     Obj next = res.get(i + 1);

     if (curr.getStatus().equals(APPROVED.toString()) &&
         next.getStatus().equals(DISAPPROVED.toString()) {
         next.setRate(null);
         next.setRateDate(curr.getRateDate());
     }
     ret.add(curr);
}


如何使用.map()或.filter()将其转换为java8样式?

谢谢!

编辑:迭代时不再删除

最佳答案

这是执行此操作的最佳方法。

原因:您可以创建res的流,但是要根据相邻元素更改值,并且访问流中的相邻元素不会导致简单的解决方案。

准确的reason的摘要:


  Java 8流库主要用于将流分成较小的块以进行并行处理,因此有状态管道阶段非常有限,并且不支持执行诸如获取当前流元素的索引和访问相邻流元素之类的操作。
  
  解决这些问题的一种典型方法(当然有一些限制)是通过索引来驱动流。

关于java - 将for循环转换为Java8样式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49678645/

10-09 00:27