在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>();