collections.reverse 是 java 中反转 list 元素顺序的静态方法,直接修改原列表且无返回值;仅适用于可修改的 list 实现类,对 set、map、不可变列表或只读包装列表会失败。

Collections.reverse 是 Java 中用于反转 List 类型集合元素顺序的静态方法,它直接修改原列表,不创建新集合。
只适用于 List,不能用于 Set 或 Map
该方法要求传入的参数必须是 List 接口的实现类(如 ArrayList、LinkedList、Arrays.asList() 返回的列表),对 Set、Map 或普通数组无效。如果传入不可变列表(如 Arrays.asList() 返回的列表)且底层数组长度固定,反转仍可成功;但若列表本身被包装为不可修改(如 Collections.unmodifiableList()),则会抛出 UnsupportedOperationException。
使用前确保列表可修改
常见错误是试图反转一个只读或固定大小的列表。操作前建议确认列表支持 set 操作:
- 用
new ArrayList(originalList)包装后再反转,避免影响原始数据 - 避免对
Collections.singletonList()或Arrays.asList()的返回值直接调用(除非确定它可写) - 检查是否已用
Collections.unmodifiableList()封装过
基本用法示例
最简使用方式如下:
List<string> list = new ArrayList(Arrays.asList("a", "b", "c"));
Collections.reverse(list);
// list 现在是 ["c", "b", "a"]
</string>
注意:无返回值(void 方法),所有改动发生在原列表上。
反转子列表范围(需配合 subList)
若只想反转部分元素,可先用 list.subList(fromIndex, toIndex) 获取视图,再对其调用 reverse:
-
subList返回的是原列表的“视图”,修改它会影响原列表 - 索引范围遵循左闭右开规则(
fromIndex包含,toIndex不包含) - 例如:反转第 1 到第 3 个元素(索引 1~3):
Collections.reverse(list.subList(1, 3));
不复杂但容易忽略细节,用对类型、看清可变性,就能安全高效地反转顺序。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











