转载

Arrays静态方法

Arrays静态方法

在java的编程实践中,在很多地方会用到Arrays的静态方法,总结一下,以便翻阅

  • sort方法

    • 版本一 sort(T [] a);

      一般数字按大小排序, 字母按照字典序排序(小写字母大于大写字母)

    • 版本二 sort(T[] a,Comparator<? super T> c)

    可以自己自定义按照那种标准进行排序, 通过实现Comparator接口

    的compare函数实现自定义的标准

    • 代码

    版本一:

    import java.util.Arrays;
    public class Solution {
        public static void main(String args[]) {
            int []a = {3, 2, 4, 5, 1};  
            String [] b = {"zC", "ZC", "abD", "abd", "cc", "bc"};
            System.out.println("Before sorting: ");
            System.out.println(Arrays.toString(a));
            System.out.println(Arrays.toString(b));
    
            Arrays.sort(a);
            Arrays.sort(b);
            System.out.println("After sorting: ");
            System.out.println(Arrays.toString(a));
            System.out.println(Arrays.toString(b));
        }
    }
    /* 输出: Before sorting: [3, 2, 4, 5, 1] [zC, ZC, abD, abd, cc, bc] After sorting: [1, 2, 3, 4, 5] [ZC, abD, abd, bc, cc, zC] */
    

    版本二:

    import java.util.Arrays;
    import java.util.Comparator;
    public class Solution {
        class Student {
            public int age;
            public String name;
            public Student(int age, String name) {
                this.age = age;
                this.name = name;
            }
            @Override
            public String toString(){
                return name;
            }
        }
        public static void main(String args[]) {
            Solution solution = new Solution();
            Student[] array = 
            {
                 /*实例化内部类*/
                solution.new Student(12, "ZHOU YU"),
                solution.new Student(14, "LI MING"),
                solution.new Student(11, "WANG HUA"),
                solution.new Student(13, "NIU TIAN")
            };
            Arrays.sort(array, new Comparator<Student>(){
                @Override
                public int compare(Student a, Student b) {
                    return a.name.compareTo(b.name);    
                }
            });
            System.out.println(Arrays.toString(array));
    
            Arrays.sort(array, new Comparator<Student>(){
                @Override
                public int compare(Student a, Student b) {
                    return a.age > b.age ? 1 :(a.age == b.age ? 0 : -1);
                }
            });
            System.out.println(Arrays.toString(array));
        }
    }
    /* 输出: [LI MING, NIU TIAN, WANG HUA, ZHOU YU] [WANG HUA, ZHOU YU, NIU TIAN, LI MING] */
  • fill方法

    fill(T[]a, T value)

    例如

    fill(boolean[]a, true);数组里面元素权威false, 有时候初始化数组很有用

  • binarySearch方法

    binarySearch(T[]a, T key)

    binarySearch(int[]a, 12)

    缺点:

    • 必须是先排好序的数组
    • 对于排好序的对象数组,必须提供相同的comparator接口

    代码:

    import java.util.Arrays;
    public class Solution {
    public static void main(String args[]) {
        int[] a = {3, 2, 4, 1, 5};
        Arrays.sort(a);
        System.out.println(Arrays.binarySearch(a, 1));
    }
    }
    /*结果:0*/
  • System.arraycopy方法(和strcpy很相, 但这是针对数组的)

    五个参数 1: 源地址 2: 源地址复制的偏移量 3: 目的地址 4:目的地址的偏移量 5: 复制长度

    代码:

    int[] a = new int[5];
    int[] b = new int[8];
    Arrays.fill(a, 5);
    Arrays.fill(b, 8);
    System.arraycopy(a, 0, b, 0, a.length);
    /*b数组:[5, 5, 5, 5, 5, 8, 8, 8]*/

    ?

正文到此结束
本文目录