我遇到一个问题,我必须将 N 个数字的列表存储在数组中,然后对其进行排序,
然后我必须在替代位置添加数字并输出总和。
问题是 N 的约束,即 0 <= N <= 1011 所以我必须在这里将 N 声明为 double 类型变量我的代码:
ArrayList<Double> myList = new ArrayList<Double>();
myList.add(number);
.....
Collections.sort(myList);
String tempNo = "";
for(double i = 0 ; i < myList.size() ; i=i+2){
tempNo = myStringWayToAdd(tempNo , myList(i)+""); // Since the sum will exceed the limit of double I have to add the numbers by help of Strings
}
但是问题是get(int)
方法采用int
而不是double
。还有其他方法可以解决我的问题吗? ,以及是否允许存储超出 int
范围的元素数量?
任何帮助将不胜感激。先感谢您。
编辑1: 我可以在 ArrayList 中使用字符串而不是 double ,然后将数字相加,但我的问题是我需要存储 N 个可能超出整数范围的元素
最佳答案
您可以使用LinkedList
,因为它 does not have a size limit (尽管那里可能会开始发生奇怪的事情)。如果数字本身可能变得很大(您似乎没有说明),您还应该能够使用 BigInteger
来表示您的数字。
// LinkedList can hold more than Integer.MAX_VALUE elements,
List<BigInteger> myList = new LinkedList<>();
// Fill it with a few numbers.
Random r = new Random();
for (int i = 0; i < 1000; i++) {
myList.add(BigInteger.probablePrime(10, r));
}
// Sort it - not sure if Collections.sort can handle > Integer.MAX_VALUE elements but worth a try.
Collections.sort(myList);
// Start at 0.
BigInteger sum = BigInteger.ZERO;
// Add every other one.
boolean addIt = false;
for (BigInteger b : myList) {
if (addIt) {
sum = sum.add(b);
}
addIt = !addIt;
}
我不确定Collections.sort
是否可以处理这么大的数字列表,更不用说它是否能在宇宙年龄内成功排序。
您可能更愿意考虑数据库,但您甚至可能会遇到包含这么多数字的问题。
关于java - 如何存储超出整数范围的元素数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26122965/