List中的数据按时间排序

使用sql语句很简单,order by就完了。java中需要实现一个Comparator比较器接口,然后调用Collections.sort方法。

Collections.sort(list, new TimeComparator())
	参数1:需要排序的list
	参数2:比较器,实现Comparator接口的类,返回一个int类型的值,相当于一个标志,告诉sort方法按照什么顺序来对list进行排序

下面一个实例转载自对List中每个对象元素按时间顺序排序

import java.text.SimpleDateFormat;
import java.util.*;
 
public class ListSort {
	//定义一个实体
    public static class UserBean {
        private String id;
        private String birthday;
 
        public String getId() {
            return id;
        }
 
        public void setId(String id) {
            this.id = id;
        }
 
        public String getBirthday() {
            return birthday;
        }
 
        public void setBirthday(String birthday) {
            this.birthday = birthday;
        }
    }
 
	 //主程序
    public static void main(String[] args) {
        List<UserBean> list = new ArrayList<UserBean>();
        UserListGenerate(list);
        System.out.println("排序前:"+list);
 
        ListSort(list);
        System.out.println("排序后:"+list);
    }
	
	 //未排序的原数据
    private static void UserListGenerate(List<UserBean> list) {
        UserBean user1 = new UserBean();
        UserBean user2 = new UserBean();
        UserBean user3 = new UserBean();
        user1.setId("zhagnsan");
        user1.setBirthday("1980-11-01");
 
        user2.setId("lisi");
        user2.setBirthday("1981-12-01");
 
        user3.setId("wangwu");
        user3.setBirthday("1980-12-01");
 
        list.add(user1);
        list.add(user2);
        list.add(user3);
    }
 
    private static void ListSort(List<UserBean> list) {
        Collections.sort(list, new Comparator<UserBean>() {
            @Override
            //定义一个比较器
            public int compare(UserBean o1, UserBean o2) {
                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
                try {
                    Date dt1 = format.parse(o1.getBirthday());
                    Date dt2 = format.parse(o2.getBirthday());
                    if (dt1.getTime() > dt2.getTime()) {
                        return 1;
                    } else if (dt1.getTime() < dt2.getTime()) {
                        return -1;
                    } else {
                        return 0;
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return 0;
            }
        });
    }
}
  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值