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中如何高效的判断数组中是否包含某个元素---的更多相关文章

  1. 在Java中如何高效的判断数组中是否包含某个元素

    原文出处: hollischuang(@Hollis_Chuang) 如何检查一个数组(无序)是否包含一个特定的值?这是一个在Java中经常用到的并且非常有用的操作.同时,这个问题在Stack Ove ...

  2. 在Java中怎样高效的推断数组中是否包括某个元素

    来自 http://www.hollischuang.com/archives/1269? 怎样检查一个数组(无序)是否包括一个特定的值?这是一个在Java中经经常使用到的并且非常实用的操作.同一时候 ...

  3. Jquery判断数组中是否包含某个元素$.inArray()的用法

    判断数组里面是否包含某个元素可以使用 $.inArray("元素(字符串)",数组名称) 进行判断 ,当存在该元素(字符串)时,返回该元素在数组的下标,不存在时返回 -1 示例代码 ...

  4. 161101、在Java中如何高效判断数组中是否包含某个元素

    如何检查一个数组(无序)是否包含一个特定的值?这是一个在Java中经常用到的并且非常有用的操作.同时,这个问题在Stack Overflow中也是一个非常热门的问题.在投票比较高的几个答案中给出了几种 ...

  5. 在Java中如何高效判断数组中是否包含某个元素

    如何检查一个数组(无序)是否包含一个特定的值?这是一个在Java中经常用到的并且非常有用的操作.同时,这个问题在Stack Overflow中也是一个非常热门的问题.在投票比较高的几个答案中给出了几种 ...

  6. 《剑指Offer》第1题(Java实现):在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

    一.题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该 ...

  7. JS判断数组中是否有重复元素的方法

    判断数组中是否有重复元素,最容易想到的方法是使用2重循环,逐个遍历,比较,但是这个是最慢,最笨的方法,百度得出了更好的方法. var ary = new Array("111",& ...

  8. js 判断数组中是否存在

    /* 判断数组中是否存在 var somearray = ["mon", "tue", "wed", "thur"] s ...

  9. 面试题:给定一个长度为N的数组,其中每个元素的取值范围都是1到N。判断数组中是否有重复的数字

    题目:给定一个长度为N的数组,其中每个元素的取值范围都是1到N.判断数组中是否有重复的数字.(原数组不必保留) 方法1.对数组进行排序(快速,堆),然后比较相邻的元素是否相同.时间复杂度为O(nlog ...

随机推荐

  1. hiho 有序01字符串 dp

    题目1 : 有序01字符串 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 对于一个01字符串,你每次可以将一个0修改成1,或者将一个1修改成0.那么,你最少需要修改多少 ...

  2. winform中的ListBox和ComboBox绑定数据

    将集合数据绑定到ListBox和ComboBox控件,界面上显示某个属性的内容 //... //自定义了Person类(有Name,Age,Heigth等属性) List<Person> ...

  3. 最新版本的Struts2+Spring4+Hibernate4三大框架整合(截止2014-10-15,提供源码下载)

    一. 项目名称:S2316S411H436 项目原型:Struts2.3.16 + Spring4.1.1 + Hibernate4.3.6 + Quartz2.2.1 源代码下载地址: 基本版:ht ...

  4. offset的坑 使用前要将对象先show

    使用jquery $('#obj').offset( {top:300, left: 600}); 如果设置offset之前是隐藏的,那么你设置新的offset之后就不会是指定的位置,而且会越飞越远, ...

  5. php给图片添加圆角并且保持透明,可做圆形头像

      原文链接:https://www.zhaokeli.com/article/8031.html 给图片添加圆角, 用到的主要的(判断一个点是否在圆内)的公式在上面所说的生成圆形图片文章中. 然后扫 ...

  6. 【程序员笔试面试必会——排序①】Python实现 冒泡排序、选择排序、插入排序、归并排序、快速排序、堆排序、希尔排序

    最近在准备笔试题和面试题,把学到的东西整理出来,一来是给自己留个笔记,二来是帮助大家学习. 题目: 给定一个int数组A及数组的大小n,请返回排序后的数组. 测试样例:  输入:[1,2,3,5,2, ...

  7. 我的 VSCode 常用扩展

    Beautify (option+shift+F) Bookmarks (option+option+k,l,j) Debugger for Chrome Docker EditorConfig fo ...

  8. nyoj——弃九法

    A*B Problem 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 设计一个程序求出A*B,然后将其结果每一位相加得到C,如果C的位数大于等于2,继续将C的各位数 ...

  9. filter-mapping中的dispatcher使用

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABGAAAAEJCAIAAABUr8bLAAAgAElEQVR4nO3dX2/bVoL3cb4h+WYnwN

  10. JWT(JSON Web Token) Java与.Net简单编码实现

    参考 JWT(JSON WEB TOKENS)-一种无状态的认证机制 基于Token的WEB后台认证机制 各种语言版本的基于HMAC-SHA256的base64加密 Java与.Net实现实现 // ...