collections.reverse() 是 java 中用于原地反转 list 元素顺序的静态方法,直接修改原列表、返回 void,仅支持可变且实现 list 接口的集合(如 arraylist),不支持数组、set、map 或不可变列表。

Collections.reverse() 是 Java 集合工具类中的一个静态方法,专门用于**原地反转 List 中元素的顺序**——也就是说,它直接修改原列表,不创建新列表,也不返回新对象(返回 void)。
必须是 List 类型,且支持随机访问
该方法只接受 List 接口的实现类作为参数,例如 ArrayList、LinkedList(虽支持但效率略低)、Vector 等。但注意:
- 不能传入数组、Set、Map 或其他非 List 集合;
- 也不能传入通过 Collections.unmodifiableList() 包装的不可变列表,否则运行时抛出 UnsupportedOperationException;
- 虽然 LinkedList 实现了 List,但因不支持高效随机访问,reverse 内部仍能工作(通过双向链表两端游走),只是性能不如 ArrayList。
用法简单,但要注意“原地修改”特性
调用后原列表内容立即被反转,没有副本。常见写法如下:
- 准备一个可变的 ArrayList:
List<string> list = new ArrayList(Arrays.asList("a", "b", "c"));</string> - 直接调用:
Collections.reverse(list); - 此时 list 变为
["c", "b", "a"],原引用指向的列表已改变
如果不想修改原列表,需先复制
若需保留原始顺序,应手动创建副本再反转:
- 用构造器复制:
List<string> reversed = new ArrayList(originalList); Collections.reverse(reversed);</string> - 或用 List.copyOf(Java 10+)配合 ArrayList 构造:
List<string> reversed = new ArrayList(List.copyOf(originalList)); Collections.reverse(reversed);</string> - 注意:不能直接对
List.copyOf()的返回值调用 reverse,因为它是不可变列表
泛型安全,无需额外类型处理
方法签名是 public static void reverse(List> list),使用通配符,兼容任意泛型类型的 List。你传入 List<integer></integer>、List<person></person> 都没问题,无需强制转换或类型擦除干预。
不复杂但容易忽略细节。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











