Arrays工具类的使用(十七)下

二.五 比较数组是否相同 equals()


二.五.一 例子


 @Test
    public void equalsTest(){
        //源数组
        int[] arr1={1,2,3,4,5,6,7,8,9};
        int[] arr2={1,2,3,4,5};
        int[] arr3={1,2,3,4,5,6,7,8,9};

        System.out.println("arr1与 arr2是否相同:"+Arrays.equals(arr1,arr2));
        System.out.println("arr1与 arr3是否相同:"+Arrays.equals(arr1,arr3));
    }


控制台打印输出:


Arrays工具类的使用(十七)下


也可以比较 对象数组, 需要重写对象的 equals () 方法。


二.五.二 简单内部实现


Arrays工具类的使用(十七)下


二.六 填充数组 fill


二.六.一 无范围填充


 @Test
    public void fillTest1(){
        //源数组有内容填充:
        int[] arr1={1,2,3,4,5,6,7,8,9};
       //填充100
        Arrays.fill(arr1,100);
        System.out.println("有内容数组填充:"+Arrays.toString(arr1));

        int[] arr2=new int[9];
        Arrays.fill(arr2,100);
        System.out.println("无内容数组填充:"+Arrays.toString(arr2));
    }


控制台打印输出:


Arrays工具类的使用(十七)下


实际上,就是替换。


内部实现:


 public static void fill(int[] a, int val) {
        for (int i = 0, len = a.length; i < len; i++)
            a[i] = val;
  }


二.六.二 有范围填充


 @Test
    public void fillTest2(){
        //源数组有内容填充:
        int[] arr1={1,2,3,4,5,6,7,8,9};
        //填充100,只填充2~5 索引处的内容
        Arrays.fill(arr1,2,5,100);
        System.out.println("有内容数组2~5填充:"+Arrays.toString(arr1));

        int[] arr2=new int[9];
        Arrays.fill(arr2,2,5,100);
        System.out.println("无内容数组2~5填充:"+Arrays.toString(arr2));
    }


控制台打印输出:


Arrays工具类的使用(十七)下


内部实现, 范围性替换


 public static void fill(int[] a, int fromIndex, int toIndex, int val) {
       // rangeCheck(a.length, fromIndex, toIndex); //检查范围是否合理
        for (int i = fromIndex; i < toIndex; i++)
            a[i] = val;
    }


二.七 二元操作


类似于 遍历数组中的每一个元素,执行相同的维护操作。


二.七.一 parallelPrefix() 小例子


如,使数组中的每一个元素,都变成 当前元素* 上一个索引处的元素, 即改变每一个元素的值。


 @Test
    public void parallelPrefixTest(){

        int[] arr={1,2,3,4,5,6,7,8,9};

        Arrays.parallelPrefix(arr, new IntBinaryOperator() {
            //left代表数组中前一个索引处的元素值,第一个元素,不进入该方法计算
            //right代表数组中当前索引处的元素值
            @Override
            public int applyAsInt(int left, int right) {
                return left*right;
            }
        });
        System.out.println("新内容为:"+Arrays.toString(arr));
    }


控制台打印输出:


Arrays工具类的使用(十七)下


二.七.二 parallelSetAll() 小例子


用于重新设置数组中的元素值


 @Test
    public void parallelSetAllTest(){
        int[] arr={1,2,3,4,5,6,7,8,9};
        Arrays.parallelSetAll(arr, new IntUnaryOperator() {
            @Override
            public int applyAsInt(int operand) {
                return operand*2;
            }
        });
        System.out.println("有内容的新内容为:"+Arrays.toString(arr));

         arr=new int[9];
        Arrays.parallelSetAll(arr, new IntUnaryOperator() {
            @Override
            public int applyAsInt(int operand) {
                return operand*2;
            }
        });
        System.out.println("无内容的新内容为:"+Arrays.toString(arr));
    }


控制台打印输出:


Arrays工具类的使用(十七)下


二.七.三 setAll() 小例子


 @Test
    public void setAllTest(){
        int[] arr={1,2,3,4,5,6,7,8,9};
        Arrays.setAll(arr, new IntUnaryOperator() {
            @Override
            public int applyAsInt(int operand) {
                return operand*3;
            }
        });
        System.out.println("有内容的新内容为:"+Arrays.toString(arr));

        arr=new int[9];
        Arrays.setAll(arr, new IntUnaryOperator() {
            @Override
            public int applyAsInt(int operand) {
                return operand*3;
            }
        });
        System.out.println("无内容的新内容为:"+Arrays.toString(arr));
    }


控制台打印输出:


Arrays工具类的使用(十七)下


二.八 排序 sort()


二.八.一 parallelSort() 并发无范围排序 小例子


 @Test
    public void parallelSortTest1(){
        int[] arr={1,3,5,7,9,2,4,6,8};
        Arrays.parallelSort(arr);
        System.out.println("排序后的数组为:"+Arrays.toString(arr));
    }


控制台打印输出:


Arrays工具类的使用(十七)下


二.八.二 parallelSort() 并发有范围排序 小例子


@Test
    public void parallelSortTest2(){
        int[] arr={1,3,5,7,9,2,4,6,8};
        //只排序 3~7, 即 7,9,2,4 四个元素。 排序完为 2,4,7,9
        Arrays.parallelSort(arr,3,7);
        System.out.println("排序后的数组为:"+Arrays.toString(arr));
    }


控制台打印输出:


Arrays工具类的使用(十七)下


二.八.三 sort() 无范围排序 小例子


@Test
    public void sortTest1(){
        int[] arr={1,3,5,7,9,2,4,6,8};
        Arrays.sort(arr);
        System.out.println("排序后的数组为:"+Arrays.toString(arr));
    }


控制台打印输出:


Arrays工具类的使用(十七)下


二.八.四 sort() 有范围排序小例子


@Test
    public void sortTest2(){
        int[] arr={1,3,5,7,9,2,4,6,8};
        //只排序 3~7, 即 7,9,2,4 四个元素。 排序完为 2,4,7,9
        Arrays.sort(arr,3,7);
        System.out.println("排序后的数组为:"+Arrays.toString(arr));
    }


控制台打印输出:


Arrays工具类的使用(十七)下


二.九 转换成流 Stream()


二.九.一 无范围转换小例子


@Test
    public void streamTest1(){
        int[] arr={1,2,3,4,5,6,7,8,9};
        //转换成流
        Arrays.stream(arr).forEach(n -> System.out.print(n));
    }


控制台打印输出:


Arrays工具类的使用(十七)下


二.九.二 有范围转换小例子


@Test
    public void streamTest2(){
        int[] arr={1,2,3,4,5,6,7,8,9};
        //将索引位置为 3~8的转换成流,不包括8索引处的元素
        Arrays.stream(arr,3,8).forEach(n -> System.out.print(n));
    }


控制台打印输出:


Arrays工具类的使用(十七)下


谢谢您的观看,如果喜欢,请关注我,再次感谢 !!!

上一篇:wordpress 导航相关的函数


下一篇:asm添加删除磁盘