Java的自定义排序以及lambda表达
以数组某个元素的大小排序为例:
import java.util.Arrays;
import java.util.Comparator;
//将大数组中的小数组按照右端点元素大小升序排序
public class 自定义排序 {
public static void main(String[] args) {
int [][] a = {{1,2},{5,6},{1,3},{2,4}};
普通写法 result1 = new 普通写法();
result1.zipai(a);
System.out.println("普通写法输出:");
for(int i = 0;i < a.length;i++)
{
System.out.println(a[i][1]);
}
lambda表达 result2 = new lambda表达();
result2.zipai(a);
System.out.println("lambda表达写法输出:");
for(int i = 0;i < a.length;i++)
{
System.out.println(a[i][1]);
}
}
}
class 普通写法
{
public void zipai(int[][] a)
{
Arrays.sort(a, new Comparator<int[]>() {
public int compare(int[] o1, int[] o2) //使用Comparator时需要有compare函数
{
return o1[1]-o2[1]; //升序
// return o2[1]-o1[1]; //降序
}
});
}
}
class lambda表达
{
public void zipai(int[][] a)
{
Arrays.sort(a,(o1, o2) -> o1[1]-o2[1]); //比较负数会越界
// Arrays.sort(a,(o1, o2) -> o1[1]>o2[1]?1:-1); 完整写法
}
}