【发布时间】:2013-06-24 11:13:44
【问题描述】:
我有一个列表,其中包含格式为 (MON-YYYY) 的字符串格式的日期,我需要对这个列表进行排序。到目前为止我遵循的方法是读取列表并将字符串转换为日期格式并使用比较选项,但我没有得到想要的结果
代码片段
List<String> abc = new ArrayList<String>();
List<Date> xyz = new ArrayList<Date>();
abc.add("JAN-2010");
abc.add("JAN-2011");
abc.add("APR-2013");
abc.add("NOV-2009");
try {
for (String abc1 : abc) {
Date date;
date = new SimpleDateFormat("MMM-yyyy", Locale.ENGLISH)
.parse(abc1);
xyz.add(date);
}
Collections.sort(xyz, new Comparator<Date>() {
public int compare(Date arg0, Date arg1) {
// return arg0.getDate().compareTo(o2.getDate());
return arg0.compareTo(arg1);
}
});
for (Date date1 : xyz) {
System.out.println("Sorted : " + date1);
}
} catch (ParseException e) {
e.printStackTrace();
}
}
输出
Sorted : Sun Nov 01 00:00:00 IST 2009
Sorted : Fri Jan 01 00:00:00 IST 2010
Sorted : Sat Jan 01 00:00:00 IST 2011
Sorted : Mon Apr 01 00:00:00 IST 2013
预期输出
NOV-2009
JAN-2010
JAN-2011
APR-2013
我也不确定上述代码在性能方面是否完美,因为如果列表中有数千个 MON-YYYY 格式的日期,转换字符串和解析将需要很长时间。
【问题讨论】:
-
您将
arg0与arg0进行比较,这显然是错误的 -
请参阅stackoverflow.com/questions/9108719/…,了解如何对日期集合进行排序。
-
不需要比较器。日期是可比的
-
Darijan,我已经更新了...这是一个拼写错误
-
@SJagdeesh 请在下面查看我的更新答案。