迭代ArrayList中的连续对象对

dsh*_*gna 3 java arraylist

我想从ArrayList获取对象,因此我可以在每个对象的元素之间执行计算.理想情况下,它应该迭代对象对.例如,在带有{obj1,obj2,obj3,obj4}的List中,它应该遍历{obj1,obj2},{obj2,obj3}和{obj3,obj4}.

到目前为止我所尝试的内容如下.

public class Sum {
    public ArrayList<Double> calculateSum(ArrayList<Iter> iter) {
        ListIterator<Iter> it = iter.listIterator();
        ArrayList<Double> sums = new ArrayList<>();

        while (it.hasNext()) {
            Iter it1 = it.next();
            Iter it2;
            if(it.hasNext()){
                it2 = it.next();
            } else {    break;  }

            double sum = it1.getValue() + it2.getValue();
            sums.add(sum);
        }
        return sums;
    }
}
Run Code Online (Sandbox Code Playgroud)

这里,它只是迭代为{obj1,obj2}和{obj3,obj4}.我怎样才能解决这个问题?

非常感谢所有帮助.谢谢!

sst*_*tan 7

一个非常正常的循环,除非你需要循环达list.size() - 1,在去年之前,数组的元素.

public ArrayList<Double> calculateSum(ArrayList<Iter> list) {
    ArrayList<Double> sums = new ArrayList<>();

    for (int i = 0; i < list.size() - 1; i++) {
        double sum = list.get(i).getValue() + list.get(i + 1).getValue();
        sums.add(sum);
    }
    return sums;
}
Run Code Online (Sandbox Code Playgroud)

编辑

在这种情况下使用迭代器不会比执行正常循环更快,只会使逻辑变得不必要地复杂并且很容易引入错误.