zoukankan      html  css  js  c++  java
  • 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类型中,首先要将数组元素遍历一遍,然后再使用集合类做其他操作。

     */

  • 相关阅读:
    关于document.body.scrollLeft总是0的原因
    转载:如何配置 SQL Server 2005 以允许远程连接
    【转载】SQL Server中Rollup关键字使用技巧
    JavaScript代码优化
    JavaScript中定义类或对象
    【转载】SQLServer2005 Pivot 转置使用动态列
    迅雷刷分
    ROW_NUMBER() OVER函数的基本用法用法
    FireFox下表单无法刷新重置的解决
    SQL 远程查询
  • 原文地址:https://www.cnblogs.com/baobeiqi-e/p/9884725.html
Copyright © 2011-2022 走看看