我需要创建一个函数,如果有两个元素的总和等于作为参数传递的随机长数,则搜索具有 2000 万个长整型的文件。这 20 百万个多头被加载到 ArrayList 中。我的问题是:如果我将这两个元素转换为两个长变量,我将它们相加,然后将结果存储到一个名为"sum"的通用长变量中,它不起作用,因为总和高于长类型的最大范围。我该如何解决这个问题?我看到存在一个名为 BigInteger 的类,但按照这样写它不起作用,我认为它作为解决方案有点混乱:
long n1=Long.valueOf(array.get(0));
long n2=Long.valueOf(array.get(1));
BigInteger sum = new BigInteger(Long.toString(n1)).add(new BigInteger((Long.toString(n2))));
BigInteger element = new BigInteger(Long.toString(elem));
if (sum.compareTo(element)==0) return true;
可悲的是,这就是大数算术在 Java 中的工作方式。Java 中的算术运算符只适用于原始数字类型,因此要在表示数字的对象上执行此操作,需要使用方法来完成。
一些JVM语言确实利用了运算符重载(Kotlin,Groovy,Scala(,但这是Java语言没有计划的功能。