初始化2D ArrayList以进行循环求和(Java)

扎克

我试图求和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)的随机分类,例如612673108695。我想将这些整数对添加到将由getSums调用的2D ArrayList(numbersList)中。

但是,我在初始化numberList时遇到困难。我的主要功能如下:

    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更改为type ArrayList<List<Integer>>,即使将所有2D ArrayLists更改为type也会引发更多错误ArrayList<List<Integer>>

因此,我的两个问题如下:

  1. 如何初始化NxM ArrayList并正确填充?
  2. 在仍然使用类方法的情况下,是否有更快的方法来完成此任务?

PS我习惯于使用Python进行编码,并且自学Java,因此,非常感谢您可以为我提供的其他信息或资源。

0

您可能希望通过使用的2D数组来简化输入intint[][] myNumbersList = new int[13][2];
在这种情况下,预期输出是1D数组int[13],可以按以下方式获得(以2对为例。请参见mcve):

public class SumsInLoop {
    //pairsOfInts should be an [n][2] array
    private static int[] sumOfPairs(int[][] pairsOfInts) {

        int[] sums = new int[pairsOfInts.length];
        for(int pairIndex = 0; pairIndex < pairsOfInts.length; pairIndex++) {
            sums[pairIndex]= pairsOfInts[pairIndex][0]+pairsOfInts[pairIndex][1];
        }
        return sums;
    }

    public static void main(String[] args) {
        int numberOfPairs = 2;
        int[][] pairsOfInts = new int[numberOfPairs][2];
        pairsOfInts[0] = new int[] {612673,108695 };
        pairsOfInts[1] = new int[] {756875,496058 };
        int[] sumOfPairs = sumOfPairs(pairsOfInts);
        System.out.println(Arrays.toString(sumOfPairs));
    }
}

如果要使用来实现解决方案,则List可以使用javafx Pair(或创建自己的Pair类。
输入可以定义为List<Pair<Integer,Integer>> pairsOfInts = new ArrayList<>();
输出可以是上述数组,也可以是List<Integer>

import java.util.ArrayList;
import java.util.List;
import javafx.util.Pair;

public class SumsInLoop {

    private static List<Integer> sumOfPairs(List<Pair<Integer, Integer>> pairsOfInts) {
        List<Integer> sums = new ArrayList<>();
        for(Pair<Integer,Integer> pair : pairsOfInts) {
            sums.add(pair.getKey()+ pair.getValue());
        }
        return sums;
    }

    public static void main(String[] args) {
        List<Pair<Integer,Integer>> pairsOfInts = new ArrayList<>();
        pairsOfInts.add (new Pair<>(612673,108695 ));
        pairsOfInts.add (new Pair<>(756875,496058));
        List<Integer> sumOfPairs = sumOfPairs(pairsOfInts);
        System.out.println(sumOfPairs); 
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章