Java中List集合数据根据时间排序

 /**
     * 根据时间排序(其他排序如根据id排序也类似)
     * @param list
     */
    private static void ListSort(List<BillHistoryEntity> list) {
    //用Collections这个工具类传list进来排序
        Collections.sort(list, new Comparator<BillHistoryEntity>() {
            @Override
            public int compare(BillHistoryEntity o1, BillHistoryEntity o2) {
                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                try {
                    Date dt1 = format.parse(o1.getSubmitTime());
                    Date dt2 = format.parse(o2.getSubmitTime());
                    if (dt1.getTime() > dt2.getTime()) {
                        return 1;//小的放前面
                    }else {
                        return -1;
                    } 
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return 0;
            }
        });
    }
假设集合数据为一个List,其每个元素是一个包含时间字符串的对象(比如Date类型),可以使用Java的Collections.sort()方法和Comparator接口实现按照时间升序排序。示例代码如下: ``` import java.util.Collections; import java.util.Comparator; import java.util.Date; import java.util.List; public class SortByTime { public static void main(String[] args) { List<Date> dataList = ... // 假设这里是一个包含时间的Date对象列表 Collections.sort(dataList, new Comparator<Date>() { @Override public int compare(Date o1, Date o2) { return o1.compareTo(o2); } }); System.out.println(dataList); } } ``` 其,Comparator接口表示比较器,用来比较集合的元素。在这里,我们实现了一个匿名内部类,重写了Comparator接口的compare()方法,使得两个Date对象按照时间的升序排序。最后调用Collections.sort()方法进行排序,结果会直接改变原始的List对象。 如果集合的元素是包含时间字符串的自定义对象,可以使用SimpleDateFormat类将字符串解析成Date对象,再进行比较,示例代码如下: ``` import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Collections; import java.util.Comparator; import java.util.List; public class SortByTime { public static void main(String[] args) throws Exception { List<MyObject> dataList = ... // 假设这里是一个包含时间字符串的自定义对象列表 DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Collections.sort(dataList, new Comparator<MyObject>() { @Override public int compare(MyObject o1, MyObject o2) { try { Date date1 = dateFormat.parse(o1.getTime()); Date date2 = dateFormat.parse(o2.getTime()); return date1.compareTo(date2); } catch (Exception e) { e.printStackTrace(); return 0; } } }); System.out.println(dataList); } } class MyObject { private String time; // ... 其他属性和方法 public String getTime() { return time; } public void setTime(String time) { this.time = time; } } ``` 其,DateFormat类是用来解析时间字符串的,SimpleDateFormat是DateFormat的一个具体实现,"yyyy-MM-dd HH:mm:ss"是时间字符串的格式。在比较器,我们将时间字符串解析成Date对象,然后进行比较。注意在解析时间字符串时可能会抛出异常,需要进行处理。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值