您的位置:首页 > 其它

如何快速的判断数组中是否有某个特定元素

2015-11-12 15:42 127 查看
如何快速的判断数组中是否有某个特定元素

判断数组中是否有某个特定元素有多种方法,但是时间复杂度是差别很大的。各种方法的实现如下:

1.使用List

public static boolean useList(String[] arr, String targetValue) {

return Arrays.asList(arr).contains(targetValue);
}
2.使用Set

public static boolean useSet(String[] arr, String targetValue) {
Set<String> set = new HashSet<String>(Arrays.asList(arr));
return set.contains(targetValue);
}
3.使用一个简单的循环

4.使用Arrays.binarySearch(),但是binarySearch()只能用于已排好序的数组中

很明显,使用简单循环的方法比使用其他任何集合效率更高。许多开发者会使用第一种方法,但是它并不是高效的。将数组压入Collection类型中,需要首先将数组元素遍历一遍,然后再使用集合类做其他操作。

如果使用Arrays.binarySearch()方法,数组必须是已排序的。由于上面的数组并没有进行排序,所以该方法不可使用。

实际上,如果你需要借助数组或者集合类高效地检查数组中是否包含特定值,一个已排序的列表或树可以做到时间复杂度为O(log(n)),hashset可以达到O(1)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: