本文介绍如何判断 `list>` 中的子列表是否从左到右严格满足字典序升序(即每个子列表都小于其后一个),支持变长列表和逐索引比较,避免越界异常。
要验证一个 List> 是否按严格字典序升序排列(即 list[0]
- 比较必须是逐索引、短路式、稳定可终止的;
- 不能简单按长度排序(如 List.of(5,3) 和 List.of(5,3,2),后者更大);
- 也不能依赖填充默认值(如用 0 替代缺失元素),否则会错误判定 List.of(1) 与 List.of(0, 5) 的大小关系。
✅ 正确策略是:为 List 定义符合字典序语义的 Comparator,再遍历相邻对校验是否全部满足 compare(a, b) 。
✅ 推荐实现:基于标准字典序比较器
Java 中 List 的自然字典序已由 Collections.compare()(Java 9+)或手动迭代器实现支持。以下是一个清晰、健壮、无异常风险的实现: