如何高效地判断数组中是否包含某特定值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何高效地判断数组中是否包含某特定值相关的知识,希望对你有一定的参考价值。
如何检查一个未排序的数组中是否包含某个特定的值,这是在Java中非常实用并且频繁使用的操作。另外,检查数组中是否包含特定值可以用多种不同的方式实现,但是时间复杂度差别很大。下面,我将为大家展示各种方法及其需要花费的时间。
1.检查数组中是否包含特定值的四种不同方法
- 使用List:
1 public static boolean useList(String[] arr,String targetValue){ 2 return Array.asList(arr).contains(targetValue); 3 }
- 使用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 }
- 使用一个简单循环
public static boolean useLoop(String[] arr,String targetValue){ for(String s:arr){ if(s.equals(targetValue)){ return true; } }return false; }
- 使用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 }
时间复杂度
- 使用二进制搜索算法来搜索指定的 int 型数组,以获得指定的值。必须在进行此调用之前对数组进行排序(通过上面的 sort 方法)。如果没有对数组进行排序,则结果是不明确的。如果数组包含多个带有指定值的元素,则无法保证找到的是哪一个。即使用Arrays.sort(a) 进行排序
以上是关于如何高效地判断数组中是否包含某特定值的主要内容,如果未能解决你的问题,请参考以下文章