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]