【发布时间】:2018-03-08 10:53:54
【问题描述】:
List<DetailsDescription> result = new ArrayList<>();
result.add(
new DetailsDescription(((Date) row.getObject("alarm_start_timestamp")).getTime()));
result.stream().sorted(Comparator.comparing(DetailsDescription::getStartTimestamp)
.reversed())
.limit(PAGE_SIZE)
.collect(Collectors.toList());
大家好!
我的列表中有几行,并且有我想要排序的时间戳。问题是 Comparator 需要一个 int 并且我不能投长(这是日期),因为如果我这样做,我会削减一些最后的数字。代码有效,但排序不准确(它会删除最后一位)。
它可能会帮助你理解:
result.stream().sorted((a,b)->a.getStartTimestamp() - b.getStartTimestamp()).collect(Collectors.toList());
还有错误:
Type mismatch: cannot convert from long to int
【问题讨论】:
-
按
Comparator.comparing(DetailsDescription::getStartTimestamp)排序有什么问题? -
日期已经实现 Comparable
-
@daniu 我使用 noSQL 数据库,我不能在那里按日期排序,所以我想在这里用 java 来做。日期实际上很长。
-
@user7 你能解释一下吗?
标签: java sorting arraylist java-stream