Java 列表排序的其他方法<;日期>;代号一
由于代码名是完整的JavaAPI,是否有另一种排序日期列表的工作方式 我在下面尝试过,但都没有编译成功Java 列表排序的其他方法<;日期>;代号一,java,codenameone,Java,Codenameone,由于代码名是完整的JavaAPI,是否有另一种排序日期列表的工作方式 我在下面尝试过,但都没有编译成功 datesList.sort(Date::compareTo); // Failed 错误:无效的方法引用DateList.sort(日期::compareTo) 错误:找不到符号cal.set(Calendar.DATE,cal.getActualMaximum(Calendar.DATE)) 我建议为sortig提供另一种解决方案。您可以使用如下连接排序: dateList =
datesList.sort(Date::compareTo); // Failed
错误:无效的方法引用DateList.sort(日期::compareTo)
错误:找不到符号cal.set(Calendar.DATE,cal.getActualMaximum(Calendar.DATE))
我建议为sortig提供另一种解决方案。您可以使用如下连接排序:
dateList =
datesList
.stream()
.sorted(
Comparator.comparingLong( e -> e.getTime() )
).collect(
Collectors.toList()
);
如果尚未将比较方法更改为:
Collections.sort(datesList, new Comparator<Date>(){
public int compare (Date d1, Date d2){
return Long.compare( d1.getTime() , d2.getTime());
}
});
Collections.sort(datesList,newcomparator(){
公共整数比较(日期d1、日期d2){
返回Long.compare(d1.getTime(),d2.getTime());
}
});
第一个和第二个都可以正常工作,没有任何错误!在本机Java中,是的,但我的问题特别涉及到代码名1。看起来第二种方法应该可以工作,您只需要编写自己的比较。可能获取长的日期值并进行比较就足够了。Codename One是否实现了java.time,即现代java日期和时间API?Date
类的设计很差,而且很早就过时了,因此您应该选择Instant
或java.time中的另一个类(如果可能)。是的,它在其日历API中是这样做的。但是java.time
在该API之外不可用。在本例中,我必须使用从我正在使用的另一个库返回的java.Date
。你真的给了我一个主意。我将使用Calendar
API构建我的列表,因为它实现了compareTo
。感谢您的回答。Codename one没有包含收集器的流包。作为附加信息,Codename one具有以下方法:DateUtil.compare(日期d1,日期d2)
@Francesco Galgani,这只适用于比较两个日期,而不是日期列表。
dateList =
datesList
.stream()
.sorted(
Comparator.comparingLong( e -> e.getTime() )
).collect(
Collectors.toList()
);
Collections.sort(datesList, new Comparator<Date>(){
public int compare (Date d1, Date d2){
return Long.compare( d1.getTime() , d2.getTime());
}
});