java中如何高效的判断数组中是否包含某个元素---
package zaLearnpackage;
import org.apache.commons.lang3.ArrayUtils;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
//检查数组是否包含某个值的方法
public class TestArray {
//使用List
public static boolean useList(String[] arr,String targetValue){
return Arrays.asList(arr).contains(targetValue);
}
//使用Set
public static boolean useSet(String[] arr,String targetValue){
Set<String> set=new HashSet<String>(Arrays.asList(arr));
return set.contains(targetValue);
}
//使用循环判断
public static boolean useLoop(String[] arr,String targetValue){
for(String s:arr){
if(s.equals(targetValue))
return true;
}
return false;
}
//查找有序数组中是否包含某个值的用法
public static boolean useArraysBinarySearch(String[] arr,String targetValue){
int a=Arrays.binarySearch(arr, targetValue);
if(a>0)
return true;
else
return false;
}
//使用ArrayUtils
public static boolean useArrayUtils(String[] arr,String targetValue){
return ArrayUtils.contains(arr,targetValue);
}
public static void main(String[] args) {
String[] arr=new String[]{"CD","BC","EF","DE","AB","JK"};
//use list
long startTime=System.nanoTime();
for(int i=0;i<100000;i++){
useList(arr, "A");
}
long endTime=System.nanoTime();
long duration=endTime-startTime;
System.out.println("useList:"+duration/1000000);
//use set
long startTime2=System.nanoTime();
for(int i=0;i<100000;i++){
useSet(arr, "A");
}
long endTime2=System.nanoTime();
long duration2=endTime2-startTime2;
System.out.println("useSet:"+duration/1000000);
//use loop
long startTime3=System.nanoTime();
for(int i=0;i<100000;i++){
useLoop(arr, "A");
}
long endTime3=System.nanoTime();
long duration3=endTime3-startTime3;
System.out.println("useLoop:"+duration/1000000);
//use Arrays.binarySearch()
long startTime4=System.nanoTime();
for(int i=0;i<100000;i++){
useArraysBinarySearch(arr, "A");
}
long endTime4=System.nanoTime();
long duration4=endTime4-startTime4;
System.out.println("useArraysBinarySearch:"+duration/1000000);
}
}
/*
* 显然,使用一个简单的循环方法比使用任何集合都更加高效。许多开发人员为了方便,都使用第一种方法,但是他的效率也相对较低。因为将数组压入Collection类型中,首先要将数组元素遍历一遍,然后再使用集合类做其他操作。
*/
java中如何高效的判断数组中是否包含某个元素---的更多相关文章
- 在Java中如何高效的判断数组中是否包含某个元素
原文出处: hollischuang(@Hollis_Chuang) 如何检查一个数组(无序)是否包含一个特定的值?这是一个在Java中经常用到的并且非常有用的操作.同时,这个问题在Stack Ove ...
- 在Java中怎样高效的推断数组中是否包括某个元素
来自 http://www.hollischuang.com/archives/1269? 怎样检查一个数组(无序)是否包括一个特定的值?这是一个在Java中经经常使用到的并且非常实用的操作.同一时候 ...
- Jquery判断数组中是否包含某个元素$.inArray()的用法
判断数组里面是否包含某个元素可以使用 $.inArray("元素(字符串)",数组名称) 进行判断 ,当存在该元素(字符串)时,返回该元素在数组的下标,不存在时返回 -1 示例代码 ...
- 161101、在Java中如何高效判断数组中是否包含某个元素
如何检查一个数组(无序)是否包含一个特定的值?这是一个在Java中经常用到的并且非常有用的操作.同时,这个问题在Stack Overflow中也是一个非常热门的问题.在投票比较高的几个答案中给出了几种 ...
- 在Java中如何高效判断数组中是否包含某个元素
如何检查一个数组(无序)是否包含一个特定的值?这是一个在Java中经常用到的并且非常有用的操作.同时,这个问题在Stack Overflow中也是一个非常热门的问题.在投票比较高的几个答案中给出了几种 ...
- 《剑指Offer》第1题(Java实现):在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
一.题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该 ...
- JS判断数组中是否有重复元素的方法
判断数组中是否有重复元素,最容易想到的方法是使用2重循环,逐个遍历,比较,但是这个是最慢,最笨的方法,百度得出了更好的方法. var ary = new Array("111",& ...
- js 判断数组中是否存在
/* 判断数组中是否存在 var somearray = ["mon", "tue", "wed", "thur"] s ...
- 面试题:给定一个长度为N的数组,其中每个元素的取值范围都是1到N。判断数组中是否有重复的数字
题目:给定一个长度为N的数组,其中每个元素的取值范围都是1到N.判断数组中是否有重复的数字.(原数组不必保留) 方法1.对数组进行排序(快速,堆),然后比较相邻的元素是否相同.时间复杂度为O(nlog ...
随机推荐
- 通过spring整合activeMQ实现jms实例
写的很详细 http://blog.csdn.net/leonardo9029/article/details/43154385
- java 位数补0处理(转)
数据库中表的ID为4位数字,如:0001,0012,0123,1234 如果插入的值不满足4位,需要进行转换,有两种方法 第一种方法以: int n = 1; NumberFormat ...
- mina-deploy(3800🌟) 快速部署工具
Mina (3800
- hdu3706单调队列
很基础的单调队列 #include<map> #include<set> #include<cmath> #include<queue> #includ ...
- 18.一篇文章,从源码深入详解ThreadLocal内存泄漏问题
1. 造成内存泄漏的原因? threadLocal是为了解决对象不能被多线程共享访问的问题,通过threadLocal.set方法将对象实例保存在每个线程自己所拥有的threadLocalMap中,这 ...
- clipboard.js使用方法
HTML data-clipboard-action=“ copy ” 或者“cut” data-clipboard-target="#domName" data-clipboa ...
- linux 使用dd命令清空文件
- day20 project+查看新闻列表 + 点赞 + 图片验证码 + 评论和多级评论 + 后台管理 + webSocket + kindEditor
Day20回顾: 1. 请求生命周期 2. 中间件 md = [ "file_path.classname" ] process_request[可有可无] process_res ...
- Ansible 小手册系列 三(命令介绍)
仅仅只是介绍,可以选择跳过 ansible ansible是指令核心部分,其主要用于执行ad-hoc命令,即单条命令.默认后面需要跟主机和选项部分,默认不指定模块时,使用的是command模块. Us ...
- date.timezone not set in php.ini. Please contact ...解决方案
无论是在LAMP还是在LNMP系统环境下, 只要PHP的版本在5.3及其以上的版本时, 无论是在安装oscommerce, 还是在安装zen cart, 以及其他的CMS时, 都会遇到如下所示的错误信 ...