Java 如何使用字符串“对自定义对象的ListArray进行排序”;日期“;成员
我有一个“计划”列表 问题是,我无序地接受了我的“tmpListPlanning” 我想把它们按日期分类。 日期的格式如下:Java 如何使用字符串“对自定义对象的ListArray进行排序”;日期“;成员,java,sorting,date,arraylist,Java,Sorting,Date,Arraylist,我有一个“计划”列表 问题是,我无序地接受了我的“tmpListPlanning” 我想把它们按日期分类。 日期的格式如下: "2013-12-10 14:00:00" 我在StackOverFlow上看到了这一点,但无法在自定义对象列表上使用: Collections.sort(datestring, new Comparator<String>() { DateFormat f = new SimpleDateFormat("dd/MM/yyyy '@'hh:m
"2013-12-10 14:00:00"
我在StackOverFlow上看到了这一点,但无法在自定义对象列表上使用:
Collections.sort(datestring, new Comparator<String>() {
DateFormat f = new SimpleDateFormat("dd/MM/yyyy '@'hh:mm a");
@Override
public int compare(String o1, String o2) {
try {
return f.parse(o1).compareTo(f.parse(o2));
} catch (ParseException e) {
throw new IllegalArgumentException(e);
}
}
});
Collections.sort(日期字符串,新的比较器(){
DateFormat f=新的简化格式(“dd/MM/yyyy'@'hh:MM a”);
@凌驾
公共整数比较(字符串o1、字符串o2){
试一试{
返回f.parse(o1).compareTo(f.parse(o2));
}捕获(解析异常){
抛出新的IllegalArgumentException(e);
}
}
});
你能帮我吗?
谢谢
Edit1:
Collections.sort(tmpListPlanning, new Comparator<Planning>() {
DateFormat f = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");
@Override
public int compare(Planningo1, Planning o2) {
String date1 = o1.getStart();
String date2 = o2.getStart();
try {
Log.e("Debug", "RETURN");
return f.parse(date1).compareTo(f.parse(date2));
} catch (ParseException e) {
Log.e("Debug", "Parse Exception");
throw new IllegalArgumentException(e);
} catch (java.text.ParseException e) {
e.printStackTrace();
}
return 0;
}
});
Collections.sort(tmpListPlanning,newcomparator(){
DateFormat f=新的简化格式(“yyyy/MM/dd hh:MM:ss”);
@凌驾
公共整数比较(规划1、规划2){
字符串date1=o1.getStart();
字符串date2=o2.getStart();
试一试{
Log.e(“调试”、“返回”);
返回f.parse(date1).compareTo(f.parse(date2));
}捕获(解析异常){
Log.e(“调试”、“解析异常”);
抛出新的IllegalArgumentException(e);
}catch(java.text.parsee){
e、 printStackTrace();
}
返回0;
}
});
您使用计划列表,因此希望比较所有计划。
您需要一个计划比较器,要比较两个计划,您需要使用它们的开始日期
您可以尝试以下方法:
Collections.sort(datestring, new Comparator<Planning>() {
DateFormat f = new SimpleDateFormat("dd/MM/yyyy '@'hh:mm a");
@Override
public int compare(Planning o1, Planning o2) {
Date date1 = o1.getStart();
Date date2 = o2.getStart();
try {
return f.parse(date1).compareTo(f.parse(date2));
} catch (ParseException e) {
throw new IllegalArgumentException(e);
}
}
});
Collections.sort(日期字符串,新的比较器(){
DateFormat f=新的简化格式(“dd/MM/yyyy'@'hh:MM a”);
@凌驾
公共整数比较(规划o1、规划o2){
Date date1=o1.getStart();
Date date2=o2.getStart();
试一试{
返回f.parse(date1).compareTo(f.parse(date2));
}捕获(解析异常){
抛出新的IllegalArgumentException(e);
}
}
});
“我不能让它工作”你怎么不能让它工作?您需要一个比较器
而不是比较器
。我认为该格式与您的计划列表的格式不匹配。为什么要解析该日期-时间字符串?当按字母顺序排序时,这种格式(类似于ISO8601)碰巧也是按时间顺序排序的。无需解析。我编辑了我的原始帖子(我做了一些调整):它每次都会通过“return f.parse(date1)。compareTo(f.parse(date2));”,但它不会修改我的tmpListPlanning。“我忘了什么吗?”马林·内尔。我的坏消息,date1和date2不是字符串,而是Date对象。它不起作用,它不会修改我的列表。你知道为什么吗?你确定不会抛出异常吗?因为对我来说,这段代码非常有效。请检查日期格式。您将日期使用为这种格式“2013-12-10 14:00:00”,并尝试将其解析为“10/12/2013 14:00:00”,因此它不起作用!!
Collections.sort(tmpListPlanning, new Comparator<Planning>() {
DateFormat f = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");
@Override
public int compare(Planningo1, Planning o2) {
String date1 = o1.getStart();
String date2 = o2.getStart();
try {
Log.e("Debug", "RETURN");
return f.parse(date1).compareTo(f.parse(date2));
} catch (ParseException e) {
Log.e("Debug", "Parse Exception");
throw new IllegalArgumentException(e);
} catch (java.text.ParseException e) {
e.printStackTrace();
}
return 0;
}
});
Collections.sort(datestring, new Comparator<Planning>() {
DateFormat f = new SimpleDateFormat("dd/MM/yyyy '@'hh:mm a");
@Override
public int compare(Planning o1, Planning o2) {
Date date1 = o1.getStart();
Date date2 = o2.getStart();
try {
return f.parse(date1).compareTo(f.parse(date2));
} catch (ParseException e) {
throw new IllegalArgumentException(e);
}
}
});