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类型中,首先要将数组元素遍历一遍,然后再使用集合类做其他操作。
     */
  • 相关阅读:
    通用的web系统数据导出功能设计实现(导出excel2003/2007 word pdf zip等)
    DALSA Coreco
    环境变量之执行文件路径的变量PATH
    命令与文件的查询
    软件开发工具GCC
    权限与命令之间的关系
    Linux防火墙
    网络管理
    分区及格式化
    VMware Workstation的网络连接方式:NAT、桥接和Host Only
  • 原文地址:https://www.cnblogs.com/gaoBlog/p/10773981.html
Copyright © 2011-2022 走看看