在java的编程实践中,在很多地方会用到Arrays的静态方法,总结一下,以便翻阅
版本一 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(T[]a, T value)
例如
fill(boolean[]a, true);数组里面元素权威false, 有时候初始化数组很有用
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*/五个参数 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]*/