在ArrayList中搜索键的和(Java)

在ArrayList中搜索键的和(Java),java,c,sorting,arraylist,binary-search,Java,C,Sorting,Arraylist,Binary Search,我需要搜索在我的ArrayList中是否有两个数字的总和,它们对应于传递给方法的给定数字X 我有两个不同的文件中的数字-一个包含数字,另一个包含键 我所做的是: -用这些数字填充2个不同的ArrayList -用我必须搜索的数字对一个进行排序,使其有序 然后我不知道如何检查给定的键是否是数组列表中包含的两个数字的和。有什么建议吗?我发布了部分代码,只是最后一次尝试 在这里,我对ArrayList进行排序,并通过传递“sums.get(I)”调用方法elementIsContained,这是我必须

我需要搜索在我的ArrayList中是否有两个数字的总和,它们对应于传递给方法的给定数字X

我有两个不同的文件中的数字-一个包含数字,另一个包含键

我所做的是:

-用这些数字填充2个不同的ArrayList

-用我必须搜索的数字对一个进行排序,使其有序

然后我不知道如何检查给定的键是否是数组列表中包含的两个数字的和。有什么建议吗?我发布了部分代码,只是最后一次尝试

在这里,我对ArrayList进行排序,并通过传递“sums.get(I)”调用方法elementIsContained,这是我必须在另一个ArrayList中搜索的数字

 case "-a":
            buffer.mergeSort(arrList, 0, arrList.size()-1);
            for(int i=0; i < sums.size(); i++){
            elementIsContained(arrList, 0, arrList.size()-1, sums.get(i) );
            }
            break;
案例“-a”:
buffer.mergeSort(arrList,0,arrList.size()-1);
对于(int i=0;i
然后我试着用二分法搜索和,但我不知道如何对所有的组合求和来找到键


我本想避免搜索比钥匙更重要的物品和搜索其他物品,但..我不知道,我没有主意了

让我们看看操作流程(一种可能的解决方案)

  • 初始化HashSetSET,将包含数字的列表中的所有数字插入该集合

  • 启动一个循环并迭代包含键的列表。因此,对于每个迭代,您都有一个键

  • 如果(Set.contains)(Sum KEY),那么您有两个数字的组合,使得总和等于KEY

  • 我不能使用HashSet,我必须用这些ArrayList做所有的事情。例如,我有一个ArrayList,里面填充了数字:10 25 40 0 5 17 11 23 7 30和我的键,它们是我在方法中以n的形式给出的数字(sums.get(I)-我必须在另一个ArrayList中检查的和)35 22 42 8 11这必须为35(10+25或30+5)返回ok,22(17+5)和42(25+17)其他的没有,因为我没有提供这些数字的组合和。如果你不能使用HashSet,但是普通的附加数组是可以的,那么如果范围小于,你可以基于索引值匹配应用标题,并获得与HashSet相似的行为。如果你不能使用附加空间,那么唯一的方法是对两者进行排序射线,然后开始从开始迭代数组1,从结束迭代另一个,并检查总和,如果总和小于K(目标总和),则增加数组1的索引,否则增加数组2的索引。