对List中每个对象元素按时间顺序排序

本文介绍了一种使用Java对包含User对象的列表按照birthday属性进行排序的方法。通过自定义Comparator实现了日期的比较,最终实现了按照指定格式的日期字符串从小到大的排序。

需求: 需要对List中的每个User按照birthday顺序排序,时间由小到大排列。

 代码实现:

 1 import java.text.SimpleDateFormat;
 2 import java.util.*;
 3 
 4 public class ListSort {
 5     public static class UserBean {
 6         private String id;
 7         private String birthday;
 8 
 9         public String getId() {
10             return id;
11         }
12 
13         public void setId(String id) {
14             this.id = id;
15         }
16 
17         public String getBirthday() {
18             return birthday;
19         }
20 
21         public void setBirthday(String birthday) {
22             this.birthday = birthday;
23         }
24     }
25 
26     public static void main(String[] args) {
27         List<UserBean> list = new ArrayList<UserBean>();
28         UserListGenerate(list);
29         System.out.println("********排序前*******");
       for(UserBean user: list){
        System.out.println(user.getBirthday());  
       }
30 31 ListSort(list); 32 System.out.println("******排序后*****");
       for(UserBean user: list){
        System.out.println(user.getBirthday());
       }
33 } 34 35 private static void UserListGenerate(List<UserBean> list) { 36 UserBean user1 = new UserBean(); 37 UserBean user2 = new UserBean(); 38 UserBean user3 = new UserBean(); 39 user1.setId("zhagnsan"); 40 user1.setBirthday("1980-11-01"); 41 42 user2.setId("lisi"); 43 user2.setBirthday("1981-12-01"); 44 45 user3.setId("wangwu"); 46 user3.setBirthday("1980-12-01"); 47 48 list.add(user1); 49 list.add(user2); 50 list.add(user3); 51 } 52 53 private static void ListSort(List<UserBean> list) { 54 Collections.sort(list, new Comparator<UserBean>() { 55 @Override 56 public int compare(UserBean o1, UserBean o2) { 57 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 58 try { 59 Date dt1 = format.parse(o1.getBirthday()); 60 Date dt2 = format.parse(o2.getBirthday()); 61 if (dt1.getTime() > dt2.getTime()) { 62 return 1; 63 } else if (dt1.getTime() < dt2.getTime()) { 64 return -1; 65 } else { 66 return 0; 67 } 68 } catch (Exception e) { 69 e.printStackTrace(); 70 } 71 return 0; 72 } 73 }); 74 } 75 }

 

转载于:https://www.cnblogs.com/hunterCecil/p/5556174.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值