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

简介: 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));
    }


控制台打印输出:


20200610124412546.png


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


二.五.二 简单内部实现


20200610124420176.png


二.六 填充数组 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));
    }


控制台打印输出:


20200610124428472.png


实际上,就是替换。


内部实现:


 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));
    }


控制台打印输出:


20200610124436234.png


内部实现, 范围性替换


 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));
    }


控制台打印输出:


20200610124445931.png


二.七.二 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));
    }


控制台打印输出:


20200610124452672.png


二.七.三 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));
    }


控制台打印输出:


20200610124505104.png


二.八 排序 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));
    }


控制台打印输出:


2020061012451173.png


二.八.二 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));
    }


控制台打印输出:


20200610124516315.png


二.八.三 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));
    }


控制台打印输出:


20200610124524384.png


二.八.四 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));
    }


控制台打印输出:


20200610124533806.png


二.九 转换成流 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));
    }


控制台打印输出:


20200610124540558.png


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


@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));
    }


控制台打印输出:


2020061012454652.png


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

相关文章
|
4月前
|
Java API
【零基础学Java】—数组工具类Arrays(十七)
【零基础学Java】—数组工具类Arrays(十七)
|
4月前
|
存储 Java 索引
【零基础学Java】—ArrayList集合概述和基本使用(十四)
【零基础学Java】—ArrayList集合概述和基本使用(十四)
|
4月前
|
Java 开发工具
JavaSE基础篇:Arrays数组工具类
JavaSE基础篇:Arrays数组工具类
|
4月前
|
Java
【零基础学Java】—Collections集合工具类(四十二)
【零基础学Java】—Collections集合工具类(四十二)
|
8月前
|
索引
Arrays工具类的常用方法
Arrays工具类的常用方法
49 0
|
9月前
|
存储 算法 Java
【JavaSE专栏46】Java常用类Arrays解析,原生数组和List集合有何区别?
【JavaSE专栏46】Java常用类Arrays解析,原生数组和List集合有何区别?
102 0
Java基础进阶集合-Collections工具类
Java基础进阶集合-Collections工具类
Java基础进阶集合-Collections工具类
|
安全 Java
Java集合(8)--集合工具类Collections
Java集合(8)--集合工具类Collections
80 0
Java集合(8)--集合工具类Collections
【JavaSE】Collections集合工具类专题(下)
文章目录 1 Collections 工具类常用方法 1.1 排序反转类 1.1.1 reverse() 1.1.2 shuffle() 1.1.3 sort() 1.2 查找、替换类 1.2.1 Object max() 1.2.2 frequency() 1.2.3 copy() 1.2.4 replaceAll()
【JavaSE】Collections集合工具类专题(下)