java List api 排序
平常大部分开发中对于List的集合使用率非常高,对于List中集合进行某个规则的排序,下面介绍一种List自带api的排序方式,首先写一个比较类实现Comparator接口,下面上例子代码
User.java
public class User {
private Integer ages;
private Date birth;
public User(Integer ages, Date birth){
super();
this.ages = ages;
this.birth = birth;
}
public Integer getAges() {
return ages;
}
public void setAges(Integer ages) {
this.ages = ages;
}
public Date getBirth() {
return birth;
}
public void setBirth(Date birth) {
this.birth = birth;
}
}
private Integer ages;
private Date birth;
public User(Integer ages, Date birth){
super();
this.ages = ages;
this.birth = birth;
}
public Integer getAges() {
return ages;
}
public void setAges(Integer ages) {
this.ages = ages;
}
public Date getBirth() {
return birth;
}
public void setBirth(Date birth) {
this.birth = birth;
}
}
UserComparator.java
public class UserComparator implements Comparator<User>{
@Override
public int compare(User o1, User o2) {
// TODO Auto-generated method stub
int num = o1.getAges().compareTo(o2.getAges());
if(num == 0){
if(o1.getBirth().after(o2.getBirth())){
return 1;
} else {
return -1;
}
} else {
return num;
}
}
}
@Override
public int compare(User o1, User o2) {
// TODO Auto-generated method stub
int num = o1.getAges().compareTo(o2.getAges());
if(num == 0){
if(o1.getBirth().after(o2.getBirth())){
return 1;
} else {
return -1;
}
} else {
return num;
}
}
}
测试类
public class TestUser {
public static void main(String[] args) {
DateFormat dateFormat2 = new SimpleDateFormat("MM-dd");
try {
User user1 = new User(12, dateFormat2.parse("09-13"));
User user2 = new User(5, dateFormat2.parse("03-13"));
User user3 = new User(43, dateFormat2.parse("03-13"));
User user4 = new User(23, dateFormat2.parse("06-13"));
User user5 = new User(12, dateFormat2.parse("03-13"));
User user6 = new User(29, dateFormat2.parse("10-19"));
User user7 = new User(52, dateFormat2.parse("05-13"));
List<User> users = new ArrayList<User>();
users.add(user1);
users.add(user2);
users.add(user3);
users.add(user5);
users.add(user6);
users.add(user7);
users.add(user4);
System.out.println("排序前");
for(User user : users){
System.out.println("年龄:" + user.getAges() + "-生日:" + DateUtil.formatDateToString(user.getBirth(), "MM-dd"));
}
UserComparator comparator= new UserComparator();
Collections.sort(users, comparator);
System.out.println("排序后");
for(User user : users){
System.out.println("年龄:" + user.getAges() + "-生日:" + DateUtil.formatDateToString(user.getBirth(), "MM-dd"));
}
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void main(String[] args) {
DateFormat dateFormat2 = new SimpleDateFormat("MM-dd");
try {
User user1 = new User(12, dateFormat2.parse("09-13"));
User user2 = new User(5, dateFormat2.parse("03-13"));
User user3 = new User(43, dateFormat2.parse("03-13"));
User user4 = new User(23, dateFormat2.parse("06-13"));
User user5 = new User(12, dateFormat2.parse("03-13"));
User user6 = new User(29, dateFormat2.parse("10-19"));
User user7 = new User(52, dateFormat2.parse("05-13"));
List<User> users = new ArrayList<User>();
users.add(user1);
users.add(user2);
users.add(user3);
users.add(user5);
users.add(user6);
users.add(user7);
users.add(user4);
System.out.println("排序前");
for(User user : users){
System.out.println("年龄:" + user.getAges() + "-生日:" + DateUtil.formatDateToString(user.getBirth(), "MM-dd"));
}
UserComparator comparator= new UserComparator();
Collections.sort(users, comparator);
System.out.println("排序后");
for(User user : users){
System.out.println("年龄:" + user.getAges() + "-生日:" + DateUtil.formatDateToString(user.getBirth(), "MM-dd"));
}
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
显示结果
排序前
年龄:12-生日:09-13
年龄:5-生日:03-13
年龄:43-生日:03-13
年龄:12-生日:03-13
年龄:29-生日:10-19
年龄:52-生日:05-13
年龄:23-生日:06-13
排序后
年龄:5-生日:03-13
年龄:12-生日:03-13
年龄:12-生日:09-13
年龄:23-生日:06-13
年龄:29-生日:10-19
年龄:43-生日:03-13
年龄:52-生日:05-13
年龄:12-生日:09-13
年龄:5-生日:03-13
年龄:43-生日:03-13
年龄:12-生日:03-13
年龄:29-生日:10-19
年龄:52-生日:05-13
年龄:23-生日:06-13
排序后
年龄:5-生日:03-13
年龄:12-生日:03-13
年龄:12-生日:09-13
年龄:23-生日:06-13
年龄:29-生日:10-19
年龄:43-生日:03-13
年龄:52-生日:05-13