(Java)添加两个长度,其总和高于长最大范围

(Java)添加两个长度,其总和高于长最大范围,java,methods,compare,Java,Methods,Compare,我需要创建一个函数,如果有两个元素的总和等于作为参数传递的随机long数,则该函数将搜索具有2000万个long的文件。这2000万个long被加载到ArrayList中。我的问题是:如果我将这两个元素转换为两个长变量,我将它们相加,然后将结果存储到一个名为“sum”的通用长变量中,它将不起作用,因为该和高于长类型的最大范围。我怎样才能解决这个问题?我看到存在一个名为BigInteger的类,但正如这样写的,它不起作用,我认为它作为解决方案有点混乱: long n1=Long.valueOf(a

我需要创建一个函数,如果有两个元素的总和等于作为参数传递的随机long数,则该函数将搜索具有2000万个long的文件。这2000万个long被加载到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语言没有计划的功能。

您可以使用
biginger.valueOf(n1)
而不是将long转换为字符串。您如何知道它不起作用?不清楚需要做什么。OP使用的是
biginger.add
方法。我看不出这个问题和答案之间有什么关系。相对于biginger+biginger?