首页 > 代码库 > 如何高效地判断数组中是否包含某特定值

如何高效地判断数组中是否包含某特定值

如何检查一个未排序的数组中是否包含某个特定的值,这是在Java中非常实用并且频繁使用的操作。另外,检查数组中是否包含特定值可以用多种不同的方式实现,但是时间复杂度差别很大。下面,我将为大家展示各种方法及其需要花费的时间。

1.检查数组中是否包含特定值的四种不同方法

  1. 使用List:
    1 public static boolean useList(String[] arr,String targetValue){
    2        return Array.asList(arr).contains(targetValue);      
    3 }

     

  2. 使用set
    1 public static boolean useSet(String[] arr, String targetValue) {
    2     Set<String> set = new HashSet<String>(Arrays.asList(arr));
    3     return set.contains(targetValue);
    4 }

     

  3. 使用一个简单循环
    public static boolean useLoop(String[] arr,String targetValue){
            for(String s:arr){
                if(s.equals(targetValue)){
                    return true;
                }
                }return false;
    }

     

  4. 使用Arrays.binarSearch()
    public static int binarySearch(int[] a, int key)
    使用二进制搜索算法来搜索指定的 int 型数组,以获得指定的值。必须在进行此调用之前对数组进行排序(通过上面的 sort 方法)。如果没有对数组进行排序,则结果是不明确的。如果数组包含多个带有指定值的元素,则无法保证找到的是哪一个。即使用Arrays.sort(a)  进行排序
    1     public static boolean useArraysBinarySearch(String[] arr,String target){
    2         Arrays.sort(arr);
    3         int a = Arrays.binarySearch(arr, target);
    4         if(a >= 0){
    5             return true;
    6         }else {
    7             return false;
    8         }
    9     }

    时间复杂度

     

如何高效地判断数组中是否包含某特定值