Arrays静态方法

来源:互联网 发布:淘宝合并购物车 编辑:程序博客网 时间:2024/06/09 23:44

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]*/

原创粉丝点击