Java Stream自定义排序:如何实现8:00-23:00时间段优先排序?

stream中自定义排序

在java中使用stream时,如果需要自定义排序规则,可以通过以下方式实现:

给定的示例中,要对obj对象集合按time属性排序,其中时间区间8:00~23:00优先排在0:00~7:00之前。

方法一:手动排序

for (int i = 0; i < 8; i++) {
    for (int index = 0; index < list.size(); index++) {
        if (list.get(index).gethour() == i) {
            obj remove = list.remove(index);
            list.add(remove);
        }
 

} }

此方法通过循环将指定时间范围内的对象移动到集合的前面。

方法二:使用comparator排序

list.sort((o1, o2) -> o2.gethour() - o1.gethour());

此方法使用comparator接口自定义排序规则,按照给定属性的差值进行排序,达到指定时间优先排队的目的。

排序完成后,输出结果如下:

23
22
21
...
7
0
1
...