在Java中用另一个数组查找数组的最快方法是什么?

zar*_*tra 1 java arrays search

数组的String.indexOf()有没有相应的?如果没有,除了线性搜索之外,有没有更快的方法在另一个中找到一个数组?

Ahm*_*der 6

无论数组的元素如何,我​​相信这与字符串搜索问题没什么不同.

文章提供了对各种已知的算法一般的介绍.

Rabin-KarpKMP可能是您的最佳选择.

您应该能够找到这些算法的Java实现并使它们适应您的问题.


Pau*_*aul 5

List<Object> list = Arrays.asList(myArray);
Collections.sort(list);
int index = Collections.binarySearch(list, find);
Run Code Online (Sandbox Code Playgroud)

要么

public static int indexOf(Object[][] array, Object[] find){
  for (int i = 0; i < array.length(); i ++){
    if (Arrays.equals(array[i], find)){
      return i;
    }
  }
  return -1;
}
Run Code Online (Sandbox Code Playgroud)

要么

public static int indexOf(Object[] array, Object find){
  for (int i = 0; i < array.length(); i ++){
    if (array[i].equals(find)){
      return i;
    }
  }
  return -1;
}
Run Code Online (Sandbox Code Playgroud)

要么

Object[] array = ...
int index = Arrays.asList(array).indexOf(find);
Run Code Online (Sandbox Code Playgroud)