java.util.Arrays$ArrayList是Arrays类内的嵌套类。 它是数组支持的固定大小或不可变列表。
Arrays.java
public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);
}
/**
* @serial include
*/
private static class ArrayList<E> extends AbstractList<E>
implements RandomAccess, java.io.Serializable
{
private static final long serialVersionUID = -2764017481108945198L;
private final E[] a;
ArrayList(E[] array) {
a = Objects.requireNonNull(array);
}
//...
}
方法Arrays.asList返回此类java.util.Arrays$ArrayList 。
List<String> list = Arrays.asList("1", "2", "3", "4", "5");
System.out.println(list.getClass()); // class java.util.Arrays$ArrayList
UnsupportedOperationException
如果我们修改不可变列表,则会抛出UnsupportedOperationException 。
// immutable list
List<String> list = Arrays.asList("1", "2", "3", "4", "5");
list.remove("3");
输出量
Exception in thread "main" java.lang.UnsupportedOperationException: remove
at java.base/java.util.Iterator.remove(Iterator.java:102)
at java.base/java.util.AbstractCollection.remove(AbstractCollection.java:299)
另一方面,独立的java.util.ArrayList类返回一个可变列表。 它允许我们修改列表。
List<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
list.remove("3"); // no exception
参考文献
翻译自: https://mkyong.com/java/what-is-java-util-arraysarraylist/
2395

被折叠的 条评论
为什么被折叠?



