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));
posted @ 2021-09-18 11:44  眼里有激光  阅读(803)  评论(0编辑  收藏  举报