如何检查列表中的日期是否是最新的

时间:2011-08-23 10:28:14

标签: java datetime date

我有List新闻Feed附加了日期,我想通过列表来确定哪个新闻Feed的日期最新 - 所以我可以安排新闻大多数当前的顺序。

任何我如何实现这个目标?

4 个答案:

答案 0 :(得分:2)

根据项目的日期使用Comparator对列表进行排序,然后使用list.get(0)选择第一项。

这是一个可编译且可运行的实现:

static class NewsFeed {
    String news;
    Date date;

    private NewsFeed(String news, Date date) {
        this.news = news;
        this.date = date;
    }

    public String getNews() {
        return news;
    }

    public Date getDate() {
        return date;
    }
}

public static void main(String[] args) throws Exception {
    List<NewsFeed> list = new ArrayList<NewsFeed>();

    list.add(new NewsFeed("A", new Date(System.currentTimeMillis() - 1000)));
    list.add(new NewsFeed("B", new Date())); // This one is the "latest"
    list.add(new NewsFeed("C", new Date(System.currentTimeMillis() - 2000)));

    Collections.sort(list, new Comparator<NewsFeed>() {
        public int compare(NewsFeed arg0, NewsFeed arg1) {
            // Compare in reverse order ie biggest first
            return arg1.getDate().compareTo(arg0.getDate()); 
        }
    });
    NewsFeed latestNewsFeed = list.get(0);
    System.out.println(latestNewsFeed.getNews()); // Prints "B", as expected
}

答案 1 :(得分:0)

最自然的方法是对列表进行排序,例如使用Collections.sort()和自定义比较器按降序排序。或者使用PriorityQueue并每次提取下一个新时间(如果您只想要最近的10个,那么很有用)

答案 2 :(得分:0)

您可以Collections.sort传递Feed的{​​{1}}个班级列表,与我猜测的日期相比,是您Comparator班级的字段

答案 3 :(得分:0)

List中包含的对象创建Comparator,然后使用此List调用Collections.sort方法进行排序,并将创建的Comparator作为参数