zoukankan      html  css  js  c++  java
  • java -- 数组常用方法

    前言

      Arrays类来自于 java.util.Arrays;

      java JDK自带的 java.util.Arrays对象,提供的功能接口非少,在开发过程中很不方便,所以我们一般都会使用一个Array的工具类,例如: Apache common lang,它提供了大量的实用方法,可以大大减少开发中代码量;

      但是,Apache common lang工具类实际上也是通过原生 java.util.Arrays类的封装来拓展了一些功能,所以对于java.util.Arrays的一些常用的方法,我们还是要有一些了解

    常用方法

      fille:填充数组

     String[] strList = new String[3];
     Arrays.fill(strList, "char");
    //strList值填充为{"char","char","char"}
    String[] strList = new String[]{"default","default"};
    Arrays.fill(strList, "char");//即便strList 初始化时存在值,也会被覆盖,strList值为:{"char","char","char"}

      asList:将数组转化为List || Set

        特别注意,将整形数组转为集合,必须用原始类型。不能直接将int[]转化为集合、因为asList()方法的参数必须是对象。应该先把int[]转化为Integer[]。对于其他原始的类型的数组也是如此,必须先转换成相应的包装类类型数组。Java是面向对象的编程语言,也就说一切皆为对象.可是那些int double 等八种数据类型却不是对象,这就与Java的一切皆是对象的思想相矛盾了,所以为了解决这个问题,Java就出现了包装类,把那些基本数据类型进行包装,让它成为了一个类,等用到的时候直接调用就可以了..因为集合的类型必须为对象,所以添加元素类型必须为原始类

            String[] strList = new String[]{"default","default"};
            //将数组转化成list
    
            //转化成ArrayList
            ArrayList<String> arrayList=new ArrayList<>(Arrays.asList(strList));
    
            //转化陈成LinkedList
            LinkedList<String> LinkedList=new LinkedList<>(Arrays.asList(strList));
    
            //转化成Set
            Set<String> set=new HashSet<>(Arrays.asList(strList));

          

      Array.toString().contains("default"):判断数组中,指定的元素是否存在(适用于字符串数组)

        contains是字符串上的方法,先用toString将数组转化成字符串,然后在通过字符串的contains方法,选取到指定的字符串

          String[] strList = new String[]{"default","default2"};
            //判断元素是否存在于数组
            boolean bl= Arrays.toString(strList).contains("default");

      Array.binarySearch:判断数组中指定的元素是否存在(适用于数值类型,并且要求数组内元素排序)return 元素存在的索引位置,如果不存在则为-1,如果元素存在,但是集合不是排序集合,那么返回-2

        此方法是采用2分法进行查找的,所以必须要求元素安顺序排列

          int[] ints = new int[]{1, 7, 5, 4, 8, 2, 6, 3, 9};
            int idx = Arrays.binarySearch(ints, 0);

    Apache common lang

    p("=============== ArrayUtils 工具类使用 ,这个类对null的输入处理很好================");
            String strs[] = { "str1", "str2", "str3" };
            p(ArrayUtils.add(strs, 0, "测试字符串"));
            p("向数组中末尾添加元素");
            p(ArrayUtils.add(strs, "str3"));
            p("向数组指定位置添加元素");
            p(ArrayUtils.add(strs, 1, "str3"));
            p("向数组中添加所有元素");
            p(ArrayUtils.addAll(strs, "str3", "str4"));
            p("拷贝数组");
            p(ArrayUtils.clone(strs));
            p("数组中是否包含指定的元素");
            p(ArrayUtils.contains(strs, "str2"));
            p("获取数组的长度");
            p(ArrayUtils.getLength(strs));
            p("查找第一次出现的位置");
            p(ArrayUtils.indexOf(strs, "str2"));
            p("判断数组是否是空的");
            p(ArrayUtils.isEmpty(strs));
            p("判断数组是否非空");
            p(ArrayUtils.isNotEmpty(strs));
            p("判断数组是否相等");
            p(ArrayUtils.isEquals(strs, new String[] { "str2" }));
            p("判断数组长度是否相等");
            p(ArrayUtils.isSameLength(strs, strs));
            p("判断数组类型是否相同");
            p(ArrayUtils.isSameType(strs, new String[] { "str" }));
            p("查找数组中最后出现元素的位置");
            p(ArrayUtils.lastIndexOf(strs, "str2"));
            p("null转换成空数组");
            p(ArrayUtils.nullToEmpty(strs));
            p("从数组中移除指定索引的元素");
            p(ArrayUtils.remove(strs, 1));
            p("从数组中移除所有指定的元素");
            p(ArrayUtils.removeAll(strs, 1, 2));
            p("移除数组中指定的元素");
            p(ArrayUtils.removeElement(strs, "str1"));
            p("移除数组中指定的所有元素");
            p(ArrayUtils.removeElements(strs, "str1", "str2"));
            p("颠倒数组");
            ArrayUtils.reverse(strs);
            p(strs);
            p("子数组");
            p(ArrayUtils.subarray(strs, 0, 2));
            p("构建数组");
            p(ArrayUtils.toArray("str1", "str2"));
            p("将二维数组转换成Map");
            String mapStr[][] = { { "key1", "value1" }, { "key2", "value2" } };
            p(ArrayUtils.toMap(mapStr));
            p("将基本类型数组转换成包装类型");
            p(ArrayUtils.toObject(new int[] { 1, 2, 3, 4, 5 }));
            p("将包装类型数组转换成基本类型");
            p(ArrayUtils.toPrimitive(new Integer[] { 1, 2, 3, 4, 5 }));
            p("将数组用字符串的形式输出");
            p(ArrayUtils.toString(strs));
  • 相关阅读:
    asp.net超强日历
    闲话多线程的创建
    一些应该熟记于心的jQuery函数和技巧
    jQuery选择符总结
    使用OQL+SQLMAP解决ORM多表复杂的查询问题
    同样的SQL语句在查询分析器执行很快,但是网站上执行超时的诡异问题
    "开门待客"还是“送货上门”?
    使用ASP.NET MVC2+PDF.NET 构建一个简单的新闻管理程序
    使用PDF.NET数据开发框架的实体操作语言OQL构造复杂查询条件
    “批量少次”还是“少量多次”邮件通信系统效率浅谈
  • 原文地址:https://www.cnblogs.com/wrhbk/p/15307253.html
Copyright © 2011-2022 走看看