小编典典

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

java

该方法Arrays.asList(<T>...A)返回的List表示形式A。这里返回的对象是List数组支持的,但不是ArrayList对象。

我正在寻找对象Arrays.asList()返回值与对象之间的差异-
ArrayList一种快速的来源,可以告诉它们而无需深入研究代码。

TIA。


阅读 212

收藏
2020-11-13

共1个答案

小编典典

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

    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

2020-11-13