我有一个BigInts的arrayDeque,我实现的只是持有字符串IE BigInt@Instancewhatever = "3476234236734567"
我已经有一个方法可以将一个BigInt添加到另一个BigInt,它返回一个新的BigInt,其中包含两个BigInt之和的String。 IE
BigInt@1 = "4321"
BigInt@2 = "5555"
BigInt@Sum = "9876"
我的问题是如何通过此Deque迭代并在BigInts上调用add。
我正在考虑在ArrayDeque的大小上使用forloop,但是ArrayDeque并不像普通的ArrayList那样真正具有x.get(x.size()-1)
功能。
编辑:有关更多推断,这是我目前正在使用的内容。
digit是字符串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());
}
答案 0 :(得分:2)
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
,内置类用于大量的int。
总结deque中元素的更高级方法是使用流减少操作和方法引用:
ArrayDeque<BigInt> deque = new ArrayDeque<>();
//populate deque...
BigInteger sum = deque.stream().reduce(BigInt::add).orElseGet(() -> new BigInt("0"));
答案 1 :(得分:1)
ArrayDeque
实现了Iterable
,因此您可以使用扩展的for循环:
BigInteger sum = BigInteger.ZERO;
for (BigInteger value : arrayDeque) {
sum = sum.add(value);
}