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]

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章