Collections.reverse()可一行原地反转任意可修改List,时间复杂度O(n)、空间复杂度O(1),但不适用于List.of()等只读列表,安全起见建议先转为ArrayList。

用 Collections.reverse() 方法,一行代码搞定。
直接调用 Collections.reverse()
这是最简洁、标准且高效的方式,适用于所有实现了 List 接口的集合(包括 ArrayList):
- 无需手动遍历或额外空间
- 原地反转,不创建新列表
- 时间复杂度 O(n),空间复杂度 O(1)
示例:
ArrayList<String> list = new ArrayList<>(Arrays.asList("a", "b", "c"));
Collections.reverse(list); // ✅ 一行完成反转
// list 现在是 ["c", "b", "a"]
注意:不能用于不可变或固定大小列表
如果列表是通过 Arrays.asList() 创建且未包装为 ArrayList,它返回的是固定大小的内部实现类,reverse() 仍可用;但若底层是只读视图(如 List.of()),会抛 UnsupportedOperationException。
立即学习“Java免费学习笔记(深入)”;
- 安全做法:确保是可修改的
ArrayList实例 - 不确定时先复制:
new ArrayList(originalList)
不推荐的手动写法(仅作对比)
虽然也能实现,但代码更长、易错、无必要:
- 双指针循环交换(需写 4–5 行)
- 用
Stream+Collectors.collectingAndThen(冗长且低效) - 借助
Stack或额外数组(浪费空间)
不复杂但容易忽略:只要列表可修改,Collections.reverse(list) 就是最优解。


















