我有List
新闻Feed附加了日期,我想通过列表来确定哪个新闻Feed的日期最新 - 所以我可以安排新闻大多数当前的顺序。
任何我如何实现这个目标?
答案 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
作为参数