商城首页欢迎来到中国正版软件门户

您的位置:首页 >怎么利用 Collections.swap() 快速交换数组列表中两个指定位置的元素对象

怎么利用 Collections.swap() 快速交换数组列表中两个指定位置的元素对象

  发布于2026-05-04 阅读(0)

扫一扫,手机访问

# Collections.swap():快速交换 List 中两个指定位置的元素 `Collections.swap()` 是 Ja va 集合工具类中一个简洁高效的方法,专门用于**交换 List 中两个指定索引位置的元素**。它不适用于普通数组(如 `int[]` 或 `String[]`),只作用于实现了 `List` 接口的对象(如 `ArrayList`、`LinkedList`)。 ## ✅ 前提:确保操作的是 List 而非数组 如果你手头是普通数组,需先转为 `List`(注意:`Arrays.asList()` 返回的是固定大小的列表,底层仍绑定原数组;若需修改,建议用 `new ArrayList(Arrays.asList(...))`): * ❌ 错误用法:`String[] arr = {"a", "b", "c"}; Collections.swap(arr, 0, 1);` → 编译不通过 * ✅ 正确用法:`List list = new ArrayList<>(Arrays.asList("a", "b", "c"));` `Collections.swap(list, 0, 2); // 交换索引 0 和 2 的元素` ## ✅ 调用方式与参数说明 方法签名:`public static void swap(List list, int i, int j)` * **list**:要操作的 List 对象(必须非 null) * **i, j**:待交换的两个索引位置(支持任意顺序,i 可大于 j,也支持 i == j —— 此时无实际变化) * 内部自动处理边界检查:若任一索引越界(`i < 0 || i >= list.size()` 或 `j < 0 || j >= list.size()`),会抛出 `IndexOutOfBoundsException` ## ✅ 实际使用示例(含输出验证) ```ja va // 示例:交换 ArrayList 中第 1 个和第 4 个元素(索引 0 和 3) List names = new ArrayList<>(Arrays.asList("Alice", "Bob", "Charlie", "Diana", "Eve")); System.out.println(names); // [Alice, Bob, Charlie, Diana, Eve] Collections.swap(names, 0, 3); System.out.println(names); // [Diana, Bob, Charlie, Alice, Eve] ``` ## ✅ 注意事项与常见误区 * 该方法直接修改原 List,**无返回值(void)**,不要试图赋值给新变量 * 对 `Arrays.asList()` 返回的列表调用 `swap` 是安全的(它支持 `set` 操作),但不能 `add`/`remove` —— 否则抛 `UnsupportedOperationException` * 若需交换数组元素,别绕弯:直接用临时变量,三行搞定: `String temp = arr[i]; arr[i] = arr[j]; arr[j] = temp;` * 多线程环境下,List 需自行保证线程安全(`Collections.swap()` 本身不加锁)
本文转载于:https://www.php.cn/faq/2415864.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注