i want find minimum , maximum matrix each column. function
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>>(); (int j=0;j<matrix[1].length;j++) { column.clear(); minmax.clear(); (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 final minmax " + j); minmaxvalues.add(minmax); system.out.println(minmaxvalues); } catch (exception ex) { system.out.println(ex.getmessage()); } } system.out.println(minmaxvalues); }
the problem @ last iteration adds minmaxvalues
last minmax
arraylist. here example of output
adding final minmax 0 [[-3.5, 4.5]] adding final minmax 1 [[-3.5, 4.5], [-3.5, 4.5]] adding final minmax 2 [[-3.5, 4.5], [-3.5, 4.5], [-3.5, 4.5]] adding final minmax 3 [[-3.5, 4.2], [-3.5, 4.2], [-3.5, 4.2], [-3.5, 4.2]] adding final minmax 4 [[-3.5, 4.2], [-3.5, 4.2], [-3.5, 4.2], [-3.5, 4.2], [-3.5, 4.2]] adding 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 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 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 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 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 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]]
as can see works fine until minmax 10 don't understand happens. can me?
you need reinitialize arraylist<double> minmax
every iteration. otherwise result list contain 11 references same list, containing last values put in.
you need move
arraylist<double> minmax = new arraylist<double>();
inside loop.