如何快速的判断数组中是否有某个特定元素
2015-11-12 15:42
127 查看
如何快速的判断数组中是否有某个特定元素
判断数组中是否有某个特定元素有多种方法,但是时间复杂度是差别很大的。各种方法的实现如下:
1.使用List
public static boolean useList(String[] arr, String targetValue) {
4.使用Arrays.binarySearch(),但是binarySearch()只能用于已排好序的数组中
很明显,使用简单循环的方法比使用其他任何集合效率更高。许多开发者会使用第一种方法,但是它并不是高效的。将数组压入Collection类型中,需要首先将数组元素遍历一遍,然后再使用集合类做其他操作。
如果使用Arrays.binarySearch()方法,数组必须是已排序的。由于上面的数组并没有进行排序,所以该方法不可使用。
实际上,如果你需要借助数组或者集合类高效地检查数组中是否包含特定值,一个已排序的列表或树可以做到时间复杂度为O(log(n)),hashset可以达到O(1)。
判断数组中是否有某个特定元素有多种方法,但是时间复杂度是差别很大的。各种方法的实现如下:
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)。
相关文章推荐
- Install and Run Scapy on Mac OS X 10.10 (Yosemite)
- spring 调度器的使用
- 读取省市区文件,并对文件内的数据进行处理和存储
- logistic回归
- 向模拟器发短信打电话的方法
- 调试工具Chisel-LLDB插件
- 访问与评价
- 从运营事故中成长
- 实战阿里云-路由模式工作并端口转发(端口映射)
- 用牛顿迭代法求根
- Error creating bean with name 'org.springframework.validation.beanvalidation.LocalValidatorFactoryBe
- android中普通的java对象转换成 json格式的字符串
- Hello world!
- 朴素贝叶斯
- XAMPP安装注意事项之apache
- 使用uiautomator时遇到问题的处理方法
- lintcode 中等题:Longest Palindromic Substring 最长回文子串
- URI和URL的区别
- [并发并行]_[Object-C]_[使用NSMutableArray等非线程安全集合类的注意事项]
- Java程序员到架构师的推荐阅读书籍