美文网首页java工具类
java工具类之Arrays

java工具类之Arrays

作者: 将代码写成诗 | 来源:发表于2019-10-19 22:44 被阅读0次

    参考资料1 : https://www.cnblogs.com/ECJTUACM-873284962/p/7363224.html

    • java.util.Arrays类能方便地操作数组,它提供的所有方法都是静态的。具有以下功能:
    • 给数组赋值:通过fill方法。
    • 对数组排序:通过sort方法,按升序。
    • 比较数组:通过equals方法比较数组中元素值是否相等。
    • 查找数组元素:通过binarySearch方法能对排序好的数组进行二分查找法操作
    package com.wpp.array;
    
    import org.junit.Test;
    
    import java.util.Arrays;
    import java.util.Collections;
    import java.util.Date;
    
    import static org.junit.Assert.assertEquals;
    
    /**
     * @author wpp25
     * @date 2019/10/20 10:38
     * @description:
     */
    public class StudyArrays {
    
        /**
         * binarySerach方法
         */
        @Test
        public void binarySearch_1Test() {
            int index = Arrays.binarySearch(new int[]{1, 2, 3, 4, 5, 6, 7}, 6);
    
            assertEquals(5, index);
    
            index = Arrays.binarySearch(new int[]{1, 2, 3, 4, 5, 6, 7}, 3, 6, 6);
            assertEquals(5, index);
    
            assertEquals(7, new int[]{1, 2, 3, 4, 5, 6, 7}[6]);
        }
    
        @Test
        public void binarySearch_1_1Test() {
            int indes = Collections.binarySearch(Arrays.asList(1, 2, 3), 2);
            assertEquals(indes, 1);
    
        }
    
        /**
         * copyOf及copyOfRange方法
         * 复制
         */
        @Test
        public void copyOfTest() {
            String[] nameArr = {"Eric", "John", "Alan", "Liz"};
            String[] copyNameArr = Arrays.copyOf(nameArr, 3);
            String[] copyNameArrRange = Arrays.copyOfRange(nameArr, 2, nameArr.length);
    
            Arrays.stream(copyNameArr).forEach(System.out::println);
            System.out.println("-----------");
            Arrays.stream(copyNameArrRange).forEach(System.out::println);
            System.out.println(nameArr);
            System.out.println(copyNameArr);
        }
    
        /**
         * sort
         */
        @Test
        public void sortTest() {
            int[] names = {4, 3, 2, 1};
            //只排序前两个
            //[John, Liz, Eric, Alan]
            Arrays.sort(names, 0, 2);
            Arrays.stream(names).forEach(System.out::println);
            //全部排序
            //[Alan, Eric, John, Liz]
            System.out.println("------------");
            Arrays.sort(names);
            Arrays.stream(names).forEach(System.out::println);
    
        }
    
        /**
         * public static <T> void sort(T[] a, Comparator<? super T> c) {
         *         if (LegacyMergeSort.userRequested)
         *             legacyMergeSort(a, c);
         *         else
         *             TimSort.sort(a, c);
         *     }
         *     TODO
         */
        @Test
        public void sort_extend_compartorTest() {
            Date[] dataArr = {};
        }
    
        /**
         *Arrays的toString方法可以方便我们打印出数组内容
         */
        @Test
        public void toStringTest() {
           String[] names = {"liz","john","eric","alan"};
           Arrays.sort(names);
            System.out.println(Arrays.toString(names));// [alan, eric, john, liz]
        }
    
        /**
         * 如果需要打印二维数组的内容:
         * int[][] stuGrades = { { 80, 81, 82 }, { 84, 85, 86 }, { 87, 88, 89 } };
         * 如果直接用
         *
         * System.out.println(Arrays.toString(stuGrades));
         * 那么得到的结果类似于
         *      [[I@35ce36, [I@757aef, [I@d9f9c3]}
         * 这个时候得用 deepToString 方法才能得到正确的结果[[80, 81, 82], [84, 85, 86], [87, 88, 89]]
         */
        @Test
        public void  deepToStringTest () {
            int[][] stuGrades = { { 80, 81, 82 }, { 84, 85, 86 }, { 87, 88, 89 } };
            System.out.println(Arrays.deepToString(stuGrades));
        }
    
        @Test
        public void equalsTest() {
            String[] names1 = { "Eric", "John", "Alan", "Liz" };
    
            String[] names2 = { "Eric", "John", "Alan", "Liz" };
    
            System.out.println(Arrays.equals(names1, names2));
        }
        @Test
        public void deepEqualsTest() {
            int[][] stuGrades1 = { { 80, 81, 82 }, { 84, 85, 86 }, { 87, 88, 89 } };
    
            int[][] stuGrades2 = { { 80, 81, 82 }, { 84, 85, 86 }, { 87, 88, 89 } };
    
            System.out.println(Arrays.deepEquals(stuGrades1, stuGrades2));
        }
    
        @Test
        public void  fillTest() {
            int[] array1 = new int[8];
            Arrays.fill(array1, 1);
            //[1, 1, 1, 1, 1, 1, 1, 1]
            System.out.println(Arrays.toString(array1));
    
            Arrays.fill(array1,3,4,9);
            System.out.println(Arrays.toString(array1));
        }
    
    }
    
    

    相关文章

      网友评论

        本文标题:java工具类之Arrays

        本文链接:https://www.haomeiwen.com/subject/kfxomctx.html