Java - 在2D数组中搜索数组

时间:2017-12-26 09:42:54

标签: java arrays comparator

Java中是否有内置的方法或库来搜索2D数组中的数组?

示例:

public static final short[][] roots = new short[][] {
       {0x02, 0x3c, 0x81, 0xcc, 0xe8, 0xe7, 0xc6, 0x4f},
       {0x09, 0x99, 0xbf, 0x90, 0x0b, 0xd5, 0xc2, 0x97},
       ....
};

// Array to find
short[] itemArray = {0x09, 0x99, 0xbf, 0x90, 0x0b, 0xd5, 0xc2, 0x97};

检查itemArrayroots是否可用的最佳方式是什么?

更新: roots是一个排序数组。无论如何,搜索可以利用Arrays.binarySearch?我想Comparator<short[]>可以提供帮助(如何写一个)?

3 个答案:

答案 0 :(得分:2)

for (short[] arr1 : roots){
   if (Arrays.equals(arr1, itemArray)){ return true;}
}
return false;

答案 1 :(得分:1)

Arrays.equals(arr1,arr2)是一个内置函数,用于比较1D数组的相等性检查。

你可以使用它。

for(short [] arr : roots) {
  if (Arrays.equals(arr1, itemArray)) {
     // arr1 matches the itemArray
     // you can also use a counter variable to return the row number    
  }
}

答案 2 :(得分:1)

int index = Arrays.binarySearch(roots, itemArray, (arr1, arr2) -> {
    // your compare algorithm goes here.
});
if (index != -1) {
    // get your array with roots[index].
}