java - 迭代添加 ArrayDeque 中的所有元素

标签 java iteration deque

我有一个 BigInts 的 arrayDeque,我将其实现为基本上只保存字符串 IE BigInt@Instancewhatever = "3476234236734567"

我已经有一种方法可以将一个 BigInt 添加到另一个 BigInt 中,该方法返回一个新的 BigInt,其中包含两个 BigInt 之和的字符串。 IE浏览器

   BigInt@1 = "4321"
   BigInt@2 = "5555"
   BigInt@Sum = "9876"

我的问题是如何迭代此 Deque 并在 BigInt 上调用 add。

我正在考虑对 ArrayDeque 的大小使用 forloop,但 ArrayDeque 并没有像您那样具有 x.get(x.size()-1) 功能与普通的ArrayList。

编辑:为了进行更多推断,这就是我目前正在处理的内容。 digital是字符串IE的List格式 “1,2,3,4”,“5,5,5,5”

public BigInt times(BigInt operand){

    List<Integer> a = this.getDigit();
    List<Integer> b = operand.getDigit();
    //sum left unused atm
    List<Integer> sum = operand.getDigit();
    Deque<BigInt> temp = new ArrayDeque<>();
    Deque<BigInt> temp1 = new ArrayDeque<>();

    if(a.size() > b.size()){
        temp1 = multiply(a,b,temp);
        //Iterate here?

    } else {
        temp1 = multiply(b,a,temp);
        //Iterate here?
    }
    return new BigInt(temp1.toString());
}

最佳答案

ArrayDeque<T>实现Iterable<T> ,因此您可以在其上使用 for-each 循环:

ArrayDeque<BigInt> deque = new ArrayDeque<BigInt>();
//populate deque

BigInt sum = new BigInt("0");
for(BigInt b : deque) {
    sum = sum.add(b);
}

//sum now holds the sum of the elements in deque.

这假设您的 BigInt类有一个方法add(BigInt b) 。要么您已经实现了它,要么您打算使用 BigInteger ,大整数的内置类。

对双端队列中的元素求和的更高级方法是使用流缩减操作和方法引用:

ArrayDeque<BigInt> deque = new ArrayDeque<>();
//populate deque...

BigInteger sum = deque.stream().reduce(BigInt::add).orElseGet(() -> new BigInt("0")); 

关于java - 迭代添加 ArrayDeque 中的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37234334/

相关文章:

java - 如何在 SSL 握手中的 JKS 中获取正确的证书

java - 重写方法和奇怪的行为

c++ - 使用 std::deque 和 clang 编译器

java - 当有文本字段溢出时缺少单词

JavaScript eval() JSON 问题

swift - 在 Swift 3 中向后迭代时安全地删除项目

c# - 遍历类属性

c++ - 与 std::deque 一起使用时不能将 Boost::mutex 作为私有(private)类成员吗?

c++ - 为什么这个Deque析构函数有内存泄漏

java - Progress Bar - 是否可以在 doInBackground() 方法之外使用 Progress Bar 的 setProgess()?