/*Comparator是java.util包里的一個接口,使用時應該實現導入相應的包,
*再寫一個實現了Comparator接口的類,並復寫int compare(Object o)方法,
*寫出你的判斷語句(例如:以下代碼是按照年齡的遞增順序排序,年齡相同則按照工資的數目遞增排序)
*把這個類添加到Arrays.sort()或Collections.sort()中(例如:定義一個list集合,用來存放對象,可以這樣寫:Collections.sort(list,new 實現類();))
*/
package test;
import java.util.*;
public class ComparaUser {
private String name;
private int age;
private double salary;
public ComparaUser(){}
public ComparaUser(String name, int age ,Double salary){
this.name = name;
this.age = age;
this.salary = salary;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
@SuppressWarnings("unchecked")
public static void main(String[] args) {
/*定義一個list集合,存放ComparaUser類型,
使用Array的靜態方法asList(T....a)進行添加*/
List<ComparaUser> list = new ArrayList<ComparaUser>(Arrays.asList(
new ComparaUser("張三",24,200.0),
new ComparaUser("李四",28,233.1),
new ComparaUser("王二",25,500.3),new ComparaUser("麻五",24,300.5)));
Collections.sort(list,new Comp());
for(ComparaUser user :list){
System.out.println(user.getName()+" "+user.getAge()+" "+user.getSalary());
}
}
}
class Comp implements Comparator{
//復寫Comparator的compara接口
@Override
public int compare(Object o1,Object o2){
ComparaUser user1 = (ComparaUser)o1;/*類型轉換,轉換成我們所比較的對象*/
ComparaUser user2 = (ComparaUser)o2;
/*按年齡排序,如果第一個user1的年齡大於user2的年齡,則返回 1 (按照升序排列)
小於返回 -1 降序排列 ; 如果相等,則按照工資再比較(參考年齡的比較方式)
*/
if(user1.getAge() > user2.getAge())
return 1;
else if(user1.getAge() < user2.getAge())
return -1;
else {
if(user1.getSalary() > user2.getSalary())
return 1;
else
return -1;
}
}
}