java - 迭代 ArrayList 中的连续对象对

标签 java arraylist

我想从 ArrayList 中获取成对的对象,以便我可以在每个对象的元素之间执行计算。理想情况下,它应该遍历成对的对象。例如,在包含 {obj1, obj2, obj3, obj4} 的列表中,它应该遍历 {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;
    }
}

在这里,它只是迭代为 {obj1,obj2} 和 {obj3,obj4}。我该如何解决这个问题?

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

最佳答案

一个非常正常的循环,除了你需要循环到 list.size() - 1before last 的元素数组。

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;
}

编辑

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

关于java - 迭代 ArrayList 中的连续对象对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31222023/

相关文章:

Java代码编译成常量池中的MethodHandle

java - 为什么一个类中只有一个数组列表保存所有对象的变量?

java - 方法不起作用

java - for循环的最后一次迭代不输出

java - 如何重新连接okhttp-ws

java - 根据rfc2202在java中实现hmac-sha1

javascript - 当我单击随机时,它显示 [object object] 而不是数组数据

java - Java8中如何进行分组和缩减

java - 如何查找arraylist中落入特定范围的元素数量?

java - 检索 JSON 对象 Android