You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java - 使用Stream对List<List<LocalTime>>进行排序

用Java Stream对List<List>排序

你想要按照每个子列表里的第一个LocalTime元素对整个大列表做升序排序对吧?用Java的Stream API可以轻松实现这个需求,核心就是通过自定义比较器,让排序逻辑基于子列表的首个时间元素来执行。

完整代码示例

import java.time.LocalTime;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

public class TimeListSorter {
    public static void main(String[] args) {
        // 初始化原始列表
        List<List<LocalTime>> originalList = List.of(
            List.of(LocalTime.of(21, 29), LocalTime.of(22, 29)),
            List.of(LocalTime.of(16, 29), LocalTime.of(17, 29))
        );

        // 用Stream完成排序
        List<List<LocalTime>> sortedList = originalList.stream()
                // 按照子列表的第一个LocalTime自然升序排序
                .sorted(Comparator.comparing(subList -> subList.get(0)))
                // 将流收集为List
                .collect(Collectors.toList());

        // 验证结果
        sortedList.forEach(System.out::println);
        // 输出结果: [16:29, 17:29], [21:29, 22:29]
    }
}

关键细节说明

  • sorted(Comparator.comparing(subList -> subList.get(0))):这里的比较器会自动提取每个子列表的第一个元素,而LocalTime本身已经实现了Comparable接口,所以会直接按照时间的自然顺序(早的时间在前)完成比较。
  • 如果你的子列表存在为空的可能性,建议加个空值检查避免抛出NullPointerException,比如:
    .sorted(Comparator.comparing(subList -> subList.isEmpty() ? LocalTime.MAX : subList.get(0)))
    
    这样空的子列表会被排到最后,你也可以根据实际需求调整这个兜底逻辑。

内容的提问来源于stack exchange,提问作者Marie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 10:47:30