Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中将ArrayList添加到另一个ArrayList_Java - Fatal编程技术网

在java中将ArrayList添加到另一个ArrayList

在java中将ArrayList添加到另一个ArrayList,java,Java,我想从每列的矩阵中找出最小值和最大值。 我的职能 public static void findMinMax(double[][] matrix) { ArrayList<Double> column = new ArrayList<Double>(); ArrayList<Double> minmax = new ArrayList<Double>(); ArrayList<ArrayList

我想从每列的矩阵中找出最小值和最大值。 我的职能

public static void findMinMax(double[][] matrix) {
        ArrayList<Double> column = new ArrayList<Double>();
        ArrayList<Double> minmax = new ArrayList<Double>();
        ArrayList<ArrayList<Double>> minMaxValues = new ArrayList<ArrayList<Double>>();
            for (int j=0;j<matrix[1].length;j++) {
                column.clear();
                minmax.clear();
                for (int i=0;i<matrix.length;i++) {
                    column.add(matrix[i][j]);
                }
                double max = Collections.max(column);
                double min = Collections.min(column);
                minmax.add(min);
                minmax.add(max);
                try {
                    System.out.println("adding to final minmax " + j);
                    minMaxValues.add(minmax);
                    System.out.println(minMaxValues);
                } catch (Exception ex) {
                    System.out.println(ex.getMessage());
                }
            }
            System.out.println(minMaxValues);
    }

正如你所看到的,在minmax 10之前,它工作正常,我不知道会发生什么。有人能帮我吗?

您需要为每次迭代重新初始化
ArrayList minmax
。否则,结果列表将只包含对同一列表的11个引用,其中包含您最后输入的值

你得走了

ArrayList<Double> minmax = new ArrayList<Double>();
ArrayList minmax=new ArrayList();

在循环中。

那么矩阵[1]的长度计算结果是什么?11?是的,矩阵有10行11列。出了什么问题?你的问题不是clear@RobbyCornelissen我不明白你的意思…为什么它工作良好,直到最后一列,只添加了最后一对最小值?见我的答案。您只需存储对同一
minmax
列表的11个引用。列表本身的内容在每次迭代中都会被覆盖。谢谢,这就是问题所在。我仍在试图理解为什么:)试着把你的
minMaxValues
只包含11个对同一
minmax
列表的引用这一事实放在心上。该列表处于上次迭代后离开的状态,因此包含上次迭代的值。
ArrayList<Double> minmax = new ArrayList<Double>();