java List api 排序

本文介绍了一种利用Java List API进行排序的方法。通过实现Comparator接口来定义排序规则,示例展示了如何根据User对象的年龄和出生日期对List进行排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;
}

}


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;
}
}


}

测试类
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();
}
}

}

显示结果
排序前
年龄: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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值