package com.company.comparator;
/**
* Created by cainiao
on 17/3/2.
*/
public class User {
private Long userId;
private Long userName;
private Integer age;
public User(Integer age){
this.age = age;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public Long getUserName() {
return userName;
}
public void setUserName(Long userName) {
this.userName = userName;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
package com.company.comparator;
import java.util.Comparator;
/**
* Created by zhaowei on 17/3/2.
*/
public class AgeComparator implements Comparator<User> {
@Override
public int compare(User o1, User o2) {
return Integer.compare(o1.getAge(),o2.getAge());
}
}
package com.company.comparator;
import java.util.*;
import java.util.ArrayList;
/**
* Created by zhaowei on 17/3/2.
*/
public class UserComparatorTest {
public static void main(String[] args) {
List<User> list = new ArrayList();
User u1 = new User(27);
User u2 = new User(19);
User u3 = new User(36);
User u4 = new User(59);
User u5 = new User(28);
list.add(u1);
list.add(u2);
list.add(u3);
list.add(u4);
list.add(u5);
Collections.sort(list,new AgeComparator());
for(User user:list){
System.out.println(user.getAge());
}
}
}
从上边的例子可以看出,默认是升序排列。如果需要降序排列,则可以修改
Integer.compare(o2.getAge(),o1.getAge());
总之:返回-1 是降序排列。返回1是升序排列。如果debug可以发现,O1 与 O2 是降序排列。
再看compare 源码可以发现默认按降序列。根据负负得正的理论,Comparator初始按照升序排列。
public static int compare(int x, int y) {
return (x < y) ? -1 : ((x == y) ? 0 : 1);
}
Compartor使用
猜你喜欢
转载自459452940-qq-com.iteye.com/blog/2359977
今日推荐
周排行