JAVA List 排序

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;

public class People {

	String name;
	Integer age;
	Date birthDate;
	// ...省略 get(),set(),constructor

	public static void main(String[] args) throws InterruptedException {
		
		Date date1 =new Date();
		People people1 = new People("张三", 13, date1);
		Thread.sleep(1000);
		
		Date date2 =new Date();
		People people2 = new People("张四", 11, date2);
		Thread.sleep(1000);
		
		Date date3 =new Date();
		People people3 = new People("张五", 18, date3);
		Thread.sleep(1000);
		
		Date date4 =new Date();
		People people4 = new People("张六", 22, date4);
		
		List<People> peoples = new ArrayList<People>();
		peoples.add(people4); peoples.add(people3); peoples.add(people2); 
        peoples.add(people1);
		
		System.out.println("------下面是比较age,Integer 类型,这种只适合 Integer 或 double------");
		peoples.sort((x,y) -> Integer.compare(x.age,y.age));  
		toMyPrint(peoples);
		
		System.out.println("---------下面这个可以比较任意类型");
		peoples.sort(Comparator.comparing(People::getBirthDate));
		toMyPrint(peoples);
		
		Collections.sort(peoples,new Comparator<People>() {
			@Override
			public int compare(People o1, People o2) {
				return o1.birthDate.compareTo(o2.birthDate);
			}
		}); 
		System.out.println("------下面是比较时间,data 类型------");
		toMyPrint(peoples);
		

		Collections.sort(peoples,new Comparator<People>() {
			@Override
			public int compare(People o1, People o2) {
				return o1.age.compareTo(o2.age);
			}
		});
		System.out.println("------下面是比较年龄,Integer 类型------");
		toMyPrint(peoples);
		
		List<String> list = new ArrayList<>();
        list.add("2");
        list.add("1");
        list.add("4");
        list.sort(Comparator.comparing(String::valueOf));//这两种都可以
        list.sort((String s1,String s2) ->s1.compareTo(s2));
        System.out.println("比较list字符串"+list);
	}
	
	static void toMyPrint(List<People> people8){
		for(People people :people8) {
			System.out.println(people);
		}
	}
}

结果:

------下面是比较age,Integer 类型,这种只适合 Integer 或 double------
People [name=张四, age=11, birthDate=Mon Jan 14 15:07:57 CST 2019]
People [name=张三, age=13, birthDate=Mon Jan 14 15:07:56 CST 2019]
People [name=张五, age=18, birthDate=Mon Jan 14 15:07:58 CST 2019]
People [name=张六, age=22, birthDate=Mon Jan 14 15:07:59 CST 2019]
---------下面这个可以比较任意类型
People [name=张三, age=13, birthDate=Mon Jan 14 15:07:56 CST 2019]
People [name=张四, age=11, birthDate=Mon Jan 14 15:07:57 CST 2019]
People [name=张五, age=18, birthDate=Mon Jan 14 15:07:58 CST 2019]
People [name=张六, age=22, birthDate=Mon Jan 14 15:07:59 CST 2019]
------下面是比较时间,data 类型------
People [name=张三, age=13, birthDate=Mon Jan 14 15:07:56 CST 2019]
People [name=张四, age=11, birthDate=Mon Jan 14 15:07:57 CST 2019]
People [name=张五, age=18, birthDate=Mon Jan 14 15:07:58 CST 2019]
People [name=张六, age=22, birthDate=Mon Jan 14 15:07:59 CST 2019]
------下面是比较年龄,Integer 类型------
People [name=张四, age=11, birthDate=Mon Jan 14 15:07:57 CST 2019]
People [name=张三, age=13, birthDate=Mon Jan 14 15:07:56 CST 2019]
People [name=张五, age=18, birthDate=Mon Jan 14 15:07:58 CST 2019]
People [name=张六, age=22, birthDate=Mon Jan 14 15:07:59 CST 2019]
比较list字符串[1, 2, 4]

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值