有没有更好的方法来创建 "abstract" 线性搜索?

Is there a better way of creating an "abstract" linear search?

所以我正在尝试编写可用于大多数非原始数据类型的线性搜索。

这是我使用的代码:

public static <T> boolean search(Comparable<T> key, T[] array) {
    for(int i = 0; i < array.length; i++) {
        if(array[i].equals(key)) {
            return true;
        }
    }
    return false;
}

我想知道是否有更好的方法或更简洁的方法。 N.B. 我只想使用线性搜索算法

谢谢

二分查找效果惊人!这很简单。

public static <T> boolean search(Comparable<T> key, T[] array) {
    int start = 0;
    int end = array.length - 1;
    while (start <= end) {
        int mid = (start + end) / 2;
        if (key == array[mid]) {
            return true;
        }
        if (key < array[mid]) {
            end = mid - 1;
        } else {
            start = mid + 1;
        }
    }
    return false;
}

您可以使用 List#contains 进行线性搜索。此外,在这种情况下不需要 Comparable

public static <T> boolean search(T needle, T[] haystack) {
    return Arrays.asList(haystack).contains(needle);
}

注意:Arrays.asList returns 数组的 List 视图。它不会复制。