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. poi读取excel转对象,格式转换帮助类

    //格式转换//value:原数据,parmtype:方法参数类型,cellType 单元格类型public static Object formatd(String value, String pa ...

  2. 图 Graph-图的表示及其遍历

    2018-03-05 16:19:46 图是计算机科学中的一个非常重要的概念,图是一种多对多的关系.从某种角度上来说树和链表都是图的一种特例. 一.图的抽象数据类型 二.表示图的方法 图是由结点和边构 ...

  3. 你曾后悔进入 IT 行业吗?为什么?(转自知乎)--一生不悔入IT

    你曾后悔进入 IT 行业吗?为什么?(转自知乎)--一生不悔入IT 一.总结 一句话总结:看了大概200条评论,99%的不后悔,大部分人后悔没有早点干,但是做it最最主要的是要注意身体. 1.it是最 ...

  4. Windows Server 2008 R2网站访问PHP响应慢的解决方法

    最近换了台新服务器,由于内存是8G的,所以就换了Windows Server 2008 R2 这款系统,虽然有点陌生,但是熟悉了一下感觉性能非常好,但是在配置完PHP环境之后却发现了问题,访问HTML ...

  5. Bash 快捷键[转]

    编辑命令 Ctrl + a :移到命令行首 Ctrl + e :移到命令行尾 Ctrl + f :按字符前移(右向) Ctrl + b :按字符后移(左向) Alt + f :按单词前移(右向) Al ...

  6. 【BZOJ3597】方伯伯运椰子(分数规划,网络流)

    [BZOJ3597]方伯伯运椰子(分数规划,网络流) 题解 给定了一个满流的费用流模型 如果要修改一条边,那么就必须满足流量平衡 也就是会修改一条某两点之间的路径上的所有边 同时还有另外一条路径会进行 ...

  7. Verilog HDL Test Bench

    As digital systems becomes more complex,it becomes increasingly important to verify the functionalit ...

  8. 由浅入深了解EventBus:(一)

    概述 由greenrobot织贡献(该组织还贡献了greenDAO),一个Android事件发布/订阅轻量级框架; EventBus是一个消息总线,以观察者模式实现,用于简化程序的组件.线程通信,可以 ...

  9. bzoj1800

    题解: 暴力枚举,然后判断是否是矩形 代码: #include<iostream> #include<cstdio> using namespace std; ],dis[]; ...

  10. 转载-lvs官方文档04-LVS集群的负载调度

    LVS集群的负载调度 章文嵩 (wensong@linux-vs.org) 2002 年 5 月 本文主要讲述了LVS集群的IP负载均衡软件IPVS在内核中实现的各种连接调度算法.针对请求的服务时间变 ...