java - ArrayList 与 Arrays.asList() 返回的列表

标签 java arrays list arraylist

<分区>

方法 Arrays.asList(<T>...A) 返回 List A 的代表. 这里返回的对象是一个 List 由数组支持,但不是 ArrayList目的。

我正在寻找对象 Arrays.asList() 之间的差异返回和 ArrayList object——无需深入研究代码即可快速了解这些信息的来源。

TIA。

最佳答案

当您调用 Arrays.asList 时,它不会返回 java.util.ArrayList。它返回一个 java.util.Arrays$ArrayList,这是一个由原始源数组支持的固定大小的列表。换句话说,它是使用 Java 的基于集合的 API 公开的数组的 View 。

    String[] sourceArr = {"A", "B", "C"};
    List<String> list = Arrays.asList(sourceArr);
    System.out.println(list); // [A, B, C]

    sourceArr[2] = ""; // changing source array changes the exposed view List
    System.out.println(list); //[A, B, ]

    list.set(0, "Z"); // Setting an element within the size of the source array
    System.out.println(Arrays.toString(sourceArr)); //[Z, B, ]

    list.set(3, "Z"); // java.lang.ArrayIndexOutOfBoundsException
    System.out.println(Arrays.toString(sourceArr));

    list.add("X"); //java.lang.UnsupportedOperationException

    list.remove("Z"); //java.lang.UnsupportedOperationException

您不能向其中添加元素,也不能从中删除元素。如果您尝试向其中添加或删除元素,您将得到 UnsupportedOperationException

关于java - ArrayList 与 Arrays.asList() 返回的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25729553/

相关文章:

java - JBoss: native 库 sqljdbc_auth.dll 已加载到另一个类加载器中

java - 在 Java 中使用列表来存储用户输入并执行任务

java - Java 中的 Getter 和 Setter

java - 使用 Java/JNI 时 Linux 上的信号处理

c++ - 指向数组转换的指针

php mySQL查询过程数组循环

javascript - 从数组中丢失数据

css - 从我的水平列表菜单中减去边框宽度

Java函数将字符串数组转换为列表,然后返回旧字符串数组而不丢失更改

java - 获取修改文件更改事件?