【问题标题】:How to sort dates in a list?如何对列表中的日期进行排序?
【发布时间】:2017-03-26 19:18:09
【问题描述】:

我有一个 Objects 列表。该列表已按预订日期排序。我想创建一个以今天日期为参数的新列表,并存储截至今天日期的最后 10 个预订和接下来的 10 个预订。

如何做到这一点?

transaction = session.beginTransaction();

        String hql = "FROM Booking ORDER BY scheduledDate";
        Query query = session.createQuery(hql);
List<Booking> bookingList = query.list();
Date now = new Date();
        List<Booking> lessThan = null;
        List<Booking> moreThan = null;

        for(int i =0; i<bookingList.size();i++){

            if(bookingList.get(i).getScheduledDate().compareTo(now)<0)
                lessThan.add(bookingList.get(i));

            if (bookingList.get(i).getScheduledDate().compareTo(now)>0)
                moreThan.add(bookingList.get(i));
        }

这些是我的 getter 方法。

public java.util.Date getScheduledDate() {
    return scheduledDate;
}

【问题讨论】:

  • 请提供您的 getter 方法,如果您使用自己的 compareTo,请同时提供。
  • lessThan 和 moreThan 被空引用...你遇到了什么问题

标签: java list sorting


【解决方案1】:

通过获取今天日期与您拥有的日期列表中每个日期的差异结果的绝对值来创建一个新列表。

在新列表中找到最小数字的位置。然后,您可以从此处获取所需日期的位置。 min-pos to (min-pos + 9) 将为您提供下 10 次预订的 10 条记录,而 (min-pos - 1) to (min-pos - 10) 将为您提供另一组。

根据 (今天的日期 - date-at-min-pos) 是大于还是小于零,结果会略有不同。然后 (min-pos+1) 到 (min-pos + 10) 将为您提供下 10 次预订的 10 条记录, (min-pos) 到 (min-pos - 9) 将为您提供另一组

【讨论】:

    【解决方案2】:

    您可以使用 Java 8 的 stream 轻松做到这一点,例如:

    List<Booking> bookingList = query.list();
    final Date today = new Date();
    List<Booking> greaterThan = bookingList.stream()
            .filter(b -> b.getScheduledDate().after(today))
            .limit(10)
            .collect(Collectors.toList());
    
    List<Booking> lessThan = bookingList.stream()
            .filter(b -> b.getScheduledDate().before(today))
            .limit(10)
            .collect(Collectors.toList());
    

    【讨论】:

    • 我如何添加到另一个列表 例如
    • booking.addAll(greaterThan); 但是,上述代码生成的列表将仅是 another 列表。
    猜你喜欢
    • 2020-06-02
    • 1970-01-01
    • 2020-10-25
    • 2019-11-17
    • 2020-01-15
    • 2013-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多