Comparator接口升序、降序、自定义排序

	List<Student> stus = new ArrayList<Student>(){
		{
			add(new Student("张三", 30));	
			add(new Student("李四", 20));	
			add(new Student("王五", 60));	
		}
	};
	//对users按年龄进行排序
	Collections.sort(stus, new Comparator<Student>() {

		@Override
		public int compare(Student s1, Student s2) {
			// 升序
			//return s1.getAge()-s2.getAge();
			return s1.getAge().compareTo(s2.getAge());
			// 降序
			// return s2.getAge()-s1.getAge();
			// return s2.getAge().compareTo(s1.getAge());
		}
	});

JDK8 LAMBDA	表达式:
	List<Student> stus = new ArrayList<Student>(){
		{
			add(new Student("张三", 30));	
			add(new Student("李四", 20));	
			add(new Student("王五", 60));	
		}
	};
	//对users按年龄进行排序
	Collections.sort(stus, (s1,s2)->(s1.getAge()-s2.getAge()));

自定义条件排序

String[] order = {"语文","数学","英语","物理","化学","生物","政治","历史","地理","总分"};
	final List<String> definedOrder = Arrays.asList(order);
	List<String> list = new ArrayList<String>(){
		{
			add("总分");
			add("英语");
			add("政治");
			add("总分");
			add("数学");
		}
	};
	Collections.sort(list,new Comparator<String>() {

		@Override
		public int compare(String o1, String o2) {
			int io1 = definedOrder .indexOf(o1);
			int io2 = definedOrder .indexOf(o2);
			return io1-io2;
		}
	});
	
	for(String s:list){
		System.out.print(s+"   ");
	}

lambda表达式

Collections.sort(list, (o1, o2)->(definedOrder .indexOf(o1)-definedOrder .indexOf(o2)));

参考来源:https://blog.youkuaiyun.com/lx_nhs/article/details/78871295

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值