目录

java-Arrays.sort-lambda排序

目录

java Arrays.sort lambda排序

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]));