[英]Adding Elements to List Java
為什么在將值分配給Arrays.asList后,我無法將元素添加到List
List<Integer> sam = Arrays.asList(1,2,3,4);
sam.add(5);
for (Integer integer : sam)
{
System.out.println(integer);
}
Arrays.asList(1,2,3,4)
在數組上創建“列表視圖”,其大小不能更改。 這樣我們就可以通過List
接口使用和訪問數組。
如果你想要一個列表,你可以在其中添加值,但仍然使用方便的Arrays.asList(..)
,只需執行:
List<Integer> sam = new ArrayList<>(Arrays.asList(1,2,3,4));
Arrays.asList
返回固定大小的List。 不允許在此列表中添加或刪除元素,但是可以使用set
方法修改此列表中的元素。
public static <T> List<T> asList(T... a) {
return new ArrayList<T>(a); // this is not java.util.ArrayList
}
private static class ArrayList<E> extends AbstractList<E>
implements RandomAccess, java.io.Serializable {
ArrayList(E[] array) {
if (array==null)
throw new NullPointerException();
a = array;
}
public E set(int index, E element) {
E oldValue = a[index];
a[index] = element;
return oldValue;
}
// add() and remove() methods are inherited from AbstractList
}
public abstract class AbstractList<E> extends AbstractCollection<E>
implements List<E> {
public E remove(int index) {
throw new UnsupportedOperationException();
}
public void add(int index, E element) {
throw new UnsupportedOperationException();
}
}
返回由指定數組支持的固定大小的列表。 (對返回列表的更改“直寫”到數組。)此方法與Collection.toArray()結合,充當基於數組的API和基於集合的API之間的橋梁。 返回的列表是可序列化的並實現RandomAccess。
因此,在創建之后,您無法在其中添加元素。
asList(T... a)
返回由指定數組支持的固定大小列表。
List<Integer> sam = new ArrayList<Integer>();
sam.addAll(Arrays.asList(1,2,3,4));
sam.add(5);
for (Integer integer : sam)
{
System.out.println(integer);
}
查看方法的文檔:
http://docs.oracle.com/javase/6/docs/api/java/util/Arrays.html#asList(T ...)
Arrays.asList方法返回固定大小的列表視圖,因此您無法使用列表添加元素。
無論如何,這里回答了同樣的問題:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.