【发布时间】:2016-11-14 09:34:30
【问题描述】:
我有格式(MM/DD/YYYY)的日期字段(字符串)来自服务调用。 我的要求是按日期对列表进行排序并按最新日期显示记录。
我已经尝试了下面的代码。但我无法按最新日期显示记录。
public class Test {
public static void main(String[] args) {
List<Opportunity> oppList = new ArrayList<Opportunity>();
Opportunity opp1 = new Opportunity();
opp1.setName("opp1");
opp1.setExpires("11/07/2016");
Opportunity opp2 = new Opportunity();
opp2.setName("opp2");
opp2.setExpires("11/08/2016");
oppList.add(opp1);
oppList.add(opp2);
List<Opportunity> opplist=sortOpportunitiesByDate(oppList);
/*Collections.sort(oppList);*/
for(int i=0; i<opplist.size(); i++){
System.out.println("Opportunity Data>>>"+opplist.get(i).getExpires());
}
}
private static List<Opportunity> sortOpportunitiesByDate(List<Opportunity> opportunities) {
Collections.sort(opportunities, new Comparator<Opportunity>() {
public int compare(Opportunity o1, Opportunity o2) {
DateFormat format = new SimpleDateFormat("MM/DD/YYYY",Locale.US);
Date date1 = null;
Date date2 = null;
try {
date1=format.parse(o1.getExpires());
date2=format.parse(o2.getExpires());
} catch (ParseException e) {
e.printStackTrace();
}
return date1.compareTo(date2);
}
});
return opportunities;
}
}
实际输出:
Opportunity Date>>>11/07/2016
Opportunity Date>>>11/08/2016
预期输出:
Opportunity Date>>>11/08/2016
Opportunity Date>>>11/07/2016
【问题讨论】:
-
一个日期是一个日期,无论你如何格式化,你需要比较然后才能对其进行排序..
-
尝试使用 date2 调用 compareTo() 并传入 date1
-
我也试过这种方式。它不起作用
-
为什么不将
expire存储为LocalDate?opp.setExpires(LocalDate.of(2016, 7, 11));
标签: java sorting date collections