关于数组(Arrays)与 工具类Arrays

关于数组(Arrays)

数组的定义

静态初始化

    //使用静态初始化,初始化数组指定数组元素的类型,初始值和数组长度(根据{}中元素的个数而定)
    Object[] array0;
    array0 = new Object[]{};
    Object[] array1 = new String[]{"a","b","c"};
    Object[] array2 = {};

    //简化写法:在定义数组的同时执行数组初始化
    Object[] array4 = {};

动态初始化

    //使用动态初始化,数组的定义和初始化同时完成,并指定数组长度,由系统来分配初始值
    int[] array = new int[5];
    Object[] array1 = new String[9];

系统分配数组的初始值:

  • byte short int long :0
  • float double :0.0
  • char :\u0000
  • boolean:false
  • 类、接口、数组:null

使用数组

关于二维数组的使用:

    //表示一个int的二维数组,数组变量array指向一个长度为2的数组,里面存放的是两个各自长度为5的int数组
    int[][] array = new int[2][5];

工具类Arrays

Java 8 之前的Arrays类方法

    int[] a = new int[]{1,2,3,4};
    int[] b = {1,2,3,4};
    //a b数组长度相等,各个元素依次相等将输出true
    System.out.println(Arrays.equals(a,b));
    //通过复制a数组,生成一个a1数组,并将数组长度拓展为6,多余的默认分配0
    int[] a1 = Arrays.copyOf(a,6); //a1 = {1,2,3,4,0,0}
    //将a1的第4(包括)到第6个位置(不包括)赋值为9
    Arrays.fill(a1,4,6,9);
    //打印a1
    System.out.println(Arrays.toString(a1));

    int[] c = {9,3,44,1};
    //对数组c排序(从小到大)
    Arrays.sort(c);
    System.out.println(Arrays.toString(c));

Java 8 为Arrays工具类增加了一些工具方法,这些方法可以充分利用多CPU并行的能力来提高设值、排序的性能。

    int[] arr1 = new int[]{3,-9,11,8};
    int[] arr2 = Arrays.copyOfRange(arr1,0,4); //这个在Java8之前就有了
    //对arr1进行并发排序
    Arrays.parallelSort(arr1);
    System.out.println(Arrays.toString(arr1));

    Arrays.parallelPrefix(arr1, new IntBinaryOperator() {
        //i 代入的是数组中前一个索引处的元素,计算第一个元素时,i为1
        //i1 代入的是数组中当前索引处的元素
        @Override
        public int applyAsInt(int i, int i1) {
            return i*i1;
        }
    });
    System.out.println(Arrays.toString(arr1));

    Arrays.parallelSetAll(arr2, new IntUnaryOperator() {
        //i 代入的是当前正在计算的索引
        @Override
        public int applyAsInt(int i) {
            return i*5;     //{0,5,10,15}
        }
    });
    System.out.println(Arrays.toString(arr2));

猜你喜欢

转载自www.cnblogs.com/woshi123/p/12469695.html