這是我創建的方法。我使用了Arrays.deepEquals。它檢查int [] []是否在int [] []之外的ArrayList中。謝謝Thomas,給出解決方案!如何在indexOf中使用list [out] int [] []?
public boolean contains(int[][]matrix1, List<int[][]> matrice){
boolean contains = false;
for(int[][] m : matrice){
if(Arrays.deepEquals(m, matrix)){
contains = true;
index = matrice.indexOf(m);
}
}
return contains;
}
我有以下代碼。我想從矩陣中得到與矩陣具有相同值的索引。我認爲它不起作用,因爲我正在檢查引用而不是值。我無法弄清楚它應該如何完成。
List<int[2][2]> matrice = new ArrayList<int[][]>();
int[][] matrix = new int[2][2]
public void testMethod(){
// here matrix gets a value
matrix = {{1,4}{3,2}};
//Here List matrice gets filled with different matrice (4x)
...
//add a copy of matrix to matrice
matrice.add(copy2dArray(matrix));
int index = matrice.indexOf(matrix);
System.out.println("matrix ->"Arrays.deepToString(matrix));
System.out.println("matrice[4] ->"Arrays.deepToString(matrice[4]));
System.out.println("index = "+index);
System.out.println(matrice.contains(matrix));
}
private int[][] copy2dArray(int[][] original){
int[][] copy = new int[original.length][];
for(int i = 0; i < original.length; i++){
copy[i] = Arrays.copyOf(original[i], original[i].length);
}
return copy;
}
OUTPUT:
matrix -> [[1,4],[3,2]]
matrice[4] -> [[1,4],[3,2]]
index = -1
false
輸出應爲:
matrix -> [[1,4],[3,2]]
matrice[4] -> [[1,4],[3,2]]
index = 4
true
指數爲什麼要在你的榜樣4? – Thomas
只是作爲一個例子,它將第5矩陣添加到矩陣列表。所以這會使它索引4.只要它給出正確的索引,它就具有與矩陣相同的值。你可以在輸出中看到矩陣[4] ==索引 – user2173361
'copy2dArray'可能不會返回完全相同的對象,'indexOf'將搜索'matrix'對象,而不是副本(默認爲「equals數組的方法是'array1 == array2')。 – Berger