Arrays.sort主要用于数组排序,可以是常量型,object型,自定义class型。
举个例子,
int[] a = new int[]{3, 1, 2};
Arrays.sort(a);
这个是一维数组排序。
比如有个String数组,想按每个String的长度排序
String[] a = new String[]{'aa', 'bbbb', 'c'};
想排成这样的结果:‘c’, ‘aa’, ‘bbbb’
那么需要自定义一个比较器,这里用简洁的lambda表达式,
因为每个元素取出来的时候会判断是String类型,所以不需要显式写出来。
String[] a = new String[]{'aa', 'bbbb', 'c'};
//Arrays.sort(a, (String a, String b) ->(a.length() - b.length())); is also OK
Arrays.sort(a, (a, b) ->(a.length() - b.length()));
上面的lambda表达式中(a, b)也可以用其他字母,比如(x,y), (m,n)等等。
再比如二维数组,想按第一个元素的大小排序
同样的,每个元素取出来会判断是int[ ], 所以不需要显示指定。
int[] a = new int[][]{{1,2}, {2, 3}, {-1, 0}};
//Arrays.sort(a, (int[] a, int[] b) -> (a[0] - b[0])); is also OK
Arrays.sort(a, (a, b) -> (a[0] - b[0]));
上面的lambda表达式中(a, b)也可以用其他字母,比如(x,y), (m,n)等等。
如果想逆序排序,只需要把a[0] - b[0] 换成 b[0] - a[0]
int[] a = new int[][]{{1,2}, {2, 3}, {-1, 0}};
//Arrays.sort(a, (int[] a, int[] b) -> (b[0] - a[0])); is also OK
Arrays.sort(a, (a, b) -> (b[0] - a[0]));