检查多维数组java中是否存在值

没有for loop ,是否有任何方法可以查看multidimensional array是否存在值? 我发现

  Arrays.asList(*ArrayName*).contains(*itemToFind*) 

但那只会搜索数组的第一维,我需要搜索2维。

我创建了一个5×5整数数组并初始化为值i * j。 Exists方法需要行号和值来搜索。

 private static Integer[][] myarray = new Integer[5][5]; public static boolean exists(int row, int value) { if(row >= myarray.length) return false; List rowvalues = Arrays.asList(Arrays.asList(myarray).get(row)); if(rowvalues.contains(value)) return true; return exists(row+1, value); } 

是。

您可以使用Bloomfilter( http://en.wikipedia.org/wiki/Bloom_filter )或为数组的键创建基于树的索引,例如Trie( http://en.wikipedia.org/wiki /特里 )

基本上,您需要一个数据结构来查找值,而不是键。 它不会花费太多空间或速度,因为您可以在两个数据结构(您和您选择的数据结构)上重复使用值对象的引用

如果你想通过它的逻辑来解决问题,你几乎可以做任何递归的事情。 在这种情况下,它应该不会太难

 private boolean checkForValue(int val, int row, int col){ if(row == numRows && col == numCols) return false; else{ if(values[row][col] == val) return true else if(col < (numCols - 1)) checkForValue(val, row, col + 1); else checkForValue(val, row + 1, 1); } } 

但是,如果你只是想节省时间,我认为for循环真的很有效率

 private boolean checkForValue(int val){ for(int i = 0; i < numRows; i++){ for(int j = 0; j < numCols; j++){ if(values[i][j] == val) return true; } } } return false; 

两者都不太粗糙。