我有一个 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/