【发布时间】:2018-10-15 11:03:51
【问题描述】:
我正在尝试对 N 对整数(一个 Nx2 ArrayList)求和,并将 N 个总和作为 ArrayList 返回。虽然我知道没有必要设置一个班级来完成这个,但我想这样做作为未来项目的练习。
import java.util.ArrayList;
public class SumsInLoop {
public SumsInLoop(int numberOfPairs, ArrayList<ArrayList<Integer>> numbersList) {}
public ArrayList<Integer> getSums(int numberOfPairs, ArrayList<ArrayList<Integer>> numbersList) {
ArrayList<Integer> pairsOfSums = new ArrayList<Integer>();
for (ArrayList<Integer> Pair : numbersList) {
int x = Pair.get(0);
int y = Pair.get(1);
int sum = x + y;
pairsOfSums.add(sum);
}
System.out.println(pairsOfSums);
return pairsOfSums;
}
我得到的数据是 N 对(numbersOfPairs)整数的随机分类,例如612673 108695。我想将这些整数对添加到将由 getSums 调用的 2D ArrayList (numbersList)。
但是,我在初始化 numbersList 时遇到了困难。我的主要功能如下:
public static void main(String[] args) {
int myNumberOfPairs = 13;
ArrayList[][] myNumbersList = new ArrayList[13][2];
myNumbersList[0][0] = new ArrayList<>();
myNumbersList[0][0].add(612673);
myNumbersList[0][1].add(108695);
myNumbersList[1][0] = new ArrayList<>();
myNumbersList[1][0].add(756875);
myNumbersList[1][1].add(496058);
SumsInLoop mySum = new SumsInLoop(myNumberOfPairs,myNumbersList);
mySum.getSums(myNumberOfPairs, myNumbersList);
最后两行代码抛出错误,要求我将 myNumbersList 更改为类型 ArrayList<List<Integer>>,这会引发更多错误,即使在将所有 2D ArrayLists 更改为类型 ArrayList<List<Integer>> 之后也是如此。
所以,我的两个问题如下:
- 如何初始化 NxM ArrayList 并正确填充它?
- 是否有更快的方法来完成这项任务,同时仍然使用类方法?
附:我习惯使用 Python 进行编码,并且正在自学 Java,因此非常感谢您提供给我的任何其他信息或资源。
【问题讨论】:
-
您有什么理由要使用
ArrayList而不是普通数组吗? -
我还能在普通数组中指定参数吗?如果是这样,那么没有。
-
您可能想要查看的内容(可能更适合您想要做的事情)是创建一个仅存储两个值的
Pair类,然后让您的函数接受一个Pairs 的数组,即Pair[]。
标签: java arrays for-loop arraylist