<分区>
方法 Arrays.asList(<T>...A)
返回 List
A
的代表.
这里返回的对象是一个 List
由数组支持,但不是 ArrayList
目的。
我正在寻找对象 Arrays.asList()
之间的差异返回和 ArrayList
object——无需深入研究代码即可快速了解这些信息的来源。
TIA。
<分区>
方法 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/