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

标签 java arraylist

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

相关文章:

java - 简单到复杂方程的弦方程 (2)

java - 将 C 转换为 Java - 指针查询

java - 如何用Java表示已知大小的未知大小元素的集合?

java - 如何在类中设置列表<Class> (Java)

java - Retrofit 2,如何在其他 Activity 中访问收到的ArrayList?

java - 如何处理此类错误以及为什么会发生?(超出内存限制)

java - 在 Java 中如何递归打印 arrayList?

java - 添加实体列表时的Spring Data jpa( hibernate )空指针异常

Java CertificateException 没有与 IP 地址匹配的主题备用名称(尝试在 AD 中创建用户)

java - 如何从 java 程序中传递命令行参数?