gpt4 book ai didi

java - 如何存储超出整数范围的元素个数

转载 作者:行者123 更新时间:2023-11-30 09:02:06 28 4
gpt4 key购买 nike

我遇到一个问题,我必须将 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com