簡體   English   中英

在Java中將ArrayList添加到另一個ArrayList

[英]Adding ArrayLists to another ArrayList in java

我想從每一列的矩陣中找到最小值和最大值。 我的功能

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 ArrayList添加到minMaxValues 這是輸出示例

adding to final minmax 0
[[-3.5, 4.5]]
adding to final minmax 1
[[-3.5, 4.5], [-3.5, 4.5]]
adding to final minmax 2
[[-3.5, 4.5], [-3.5, 4.5], [-3.5, 4.5]]
adding to final minmax 3
[[-3.5, 4.2], [-3.5, 4.2], [-3.5, 4.2], [-3.5, 4.2]]
adding to final minmax 4
[[-3.5, 4.2], [-3.5, 4.2], [-3.5, 4.2], [-3.5, 4.2], [-3.5, 4.2]]
adding to final minmax 5
[[-3.5, 4.2], [-3.5, 4.2], [-3.5, 4.2], [-3.5, 4.2], [-3.5, 4.2], [-3.5, 4.2]]
adding to final minmax 6
[[-3.5, 4.2], [-3.5, 4.2], [-3.5, 4.2], [-3.5, 4.2], [-3.5, 4.2], [-3.5, 4.2], [-3.5, 4.2]]
adding to final minmax 7
[[-3.9, 4.2], [-3.9, 4.2], [-3.9, 4.2], [-3.9, 4.2], [-3.9, 4.2], [-3.9, 4.2], [-3.9, 4.2], [-3.9, 4.2]]
adding to final minmax 8
[[-3.9, 4.2], [-3.9, 4.2], [-3.9, 4.2], [-3.9, 4.2], [-3.9, 4.2], [-3.9, 4.2], [-3.9, 4.2], [-3.9, 4.2], [-3.9, 4.2]]
adding to final minmax 9
[[-3.9, 4.2], [-3.9, 4.2], [-3.9, 4.2], [-3.9, 4.2], [-3.9, 4.2], [-3.9, 4.2], [-3.9, 4.2], [-3.9, 4.2], [-3.9, 4.2], [-3.9, 4.2]]
adding to final minmax 10
[[-3.9, 4.5], [-3.9, 4.5], [-3.9, 4.5], [-3.9, 4.5], [-3.9, 4.5], [-3.9, 4.5], [-3.9, 4.5], [-3.9, 4.5], [-3.9, 4.5], [-3.9, 4.5], [-3.9, 4.5]]

如您所見,它在minmax 10之前工作正常,我不知道會發生什么。 誰能幫我?

您需要為每次迭代重新初始化ArrayList<Double> minmax 否則,結果列表將只包含對該列表的 11個引用,其中包含您輸入的最后一個值。

你需要搬家

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

在你的循環中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM