现在有一个数组,通过Arrays.asList(),那么修改数组的内容,集合的内容会被修改吗?

1 个回答

  • 小龙女
    人面不知何处去,桃花依旧笑春风。
    会的。 原因是: * `Arrays.asList()` 返回的并不是一个新的 `ArrayList`,而是 `java.util.Arrays` 里的一个静态内部类 **`Arrays$ArrayList`**(注意它和 `java.util.ArrayList` 不是同一个类)。 * 这个类的底层**直接引用**你传入的数组作为数据存储,没有再拷贝一份。 * 所以修改原数组的元素值,会直接反映到这个集合里;同样,修改集合的元素值(`set()` 方法)也会改动原数组。 ### 示例: ```java String[] arr = {"A", "B", "C"}; List<String> list = Arrays.asList(arr); arr[0] = "X"; System.out.println(list); // [X, B, C] list.set(1, "Y"); System.out.println(Arrays.toString(arr)); // [X, Y, C] ``` 可以看到: 1. 改数组 → 集合同步变化 2. 改集合(`set`)→ 数组同步变化 ### 注意事项 * 这个集合是**定长的**,不能执行 `add()` 或 `remove()`,否则抛 `UnsupportedOperationException`。 * 如果你需要一个完全独立、不受原数组影响的集合,可以用: ```java List<String> list = new ArrayList<>(Arrays.asList(arr)); ``` 这样修改数组或集合互不影响。
    发布于 2025-08-12 20:40 •IP属地 广东
    举报
    评论
    收藏