java自定义排序以及lambda表达


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); 完整写法
	}
}

文章作者: 一袖南烟顾
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 一袖南烟顾 !
评论
  目录