collections.swap()用于直接交换list中两个指定索引位置的元素;需传入可修改list及合法索引i、j,否则抛出unsupportedoperationexception或indexoutofboundsexception。

Collections.swap() 是 Java 集合工具类中一个静态方法,专门用于**直接交换 List 中两个指定索引位置的元素**,无需手动临时变量或额外逻辑,简洁安全。
方法签名与基本用法
该方法定义在 Collections 工具类中,签名如下:
它接收三个参数:待操作的 List、第一个索引 i、第二个索引 j。执行后,list[i] 和 list[j] 的值会互换。
使用前提和注意事项
- 传入的
List必须是可修改的(如ArrayList、LinkedList),不可修改列表(如Collections.unmodifiableList())会抛UnsupportedOperationException - 索引
i和j必须在合法范围内(0 ≤ i,j ),否则抛 <code>IndexOutOfBoundsException - 支持
i == j(此时无实际变化,但不会报错) - 底层调用的是
List.set(),因此对ArrayList是 O(1),对LinkedList是 O(min(i,j))(需遍历定位)
简单示例代码
以下是一个可直接运行的示例:
import java.util.*;
public class SwapDemo {
public static void main(String[] args) {
List<string> list = new ArrayList(Arrays.asList("A", "B", "C", "D", "E"));
System.out.println("交换前: " + list); // [A, B, C, D, E]
Collections.swap(list, 1, 3); // 交换索引 1("B")和索引 3("D")
System.out.println("交换后: " + list); // [A, D, C, B, E]
}
}</string>
对比手动交换(加深理解)
不使用 Collections.swap() 时,通常这样写:
String temp = list.get(i); list.set(i, list.get(j)); list.set(j, temp);
而 Collections.swap() 就是把这三步封装好了——更简洁、不易出错,也明确表达了“交换”意图。










