日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java中的asList_Java中的Arrays.asList()方法

發布時間:2023/12/13 java 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java中的asList_Java中的Arrays.asList()方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Arrays.asList()返回一個List,但是這種情況下,其底層的實現是一個final數組,因此不能調整其尺寸

如下代碼片段:

package chapter11.t1;

import java.util.*;

public class AddingGroups {

public static void main(String[] args) {

List list = Arrays.asList(1,2,3,4,5);

list.add(6);

}

}

通過Arrays.asList()生成list對象,然后再向list中添加元素6,程序報錯如下:

Exception in thread "main" java.lang.UnsupportedOperationException

at java.util.AbstractList.add(AbstractList.java:148)

at java.util.AbstractList.add(AbstractList.java:108)

at chapter11.t1.AddingGroups.main(AddingGroups.java:8)

看下Arrays類的源碼如下:

asList()方法返回一個內部類ArrayList的對象

public static List asList(T... a) {

return new ArrayList<>(a);

}

下面看下Arrays類中的ArrayList內部類的源碼:

private static class ArrayList extends AbstractList

implements RandomAccess, java.io.Serializable

{

private static final long serialVersionUID = -2764017481108945198L;

private final E[] a;

ArrayList(E[] array) {

a = Objects.requireNonNull(array);

}

@Override

public int size() {

return a.length;

}

@Override

public Object[] toArray() {

return a.clone();

}

@Override

@SuppressWarnings("unchecked")

public T[] toArray(T[] a) {

int size = size();

if (a.length < size)

return Arrays.copyOf(this.a, size,

(Class extends T[]>) a.getClass());

System.arraycopy(this.a, 0, a, 0, size);

if (a.length > size)

a[size] = null;

return a;

}

@Override

public E get(int index) {

return a[index];

}

@Override

public E set(int index, E element) {

E oldValue = a[index];

a[index] = element;

return oldValue;

}

@Override

public int indexOf(Object o) {

E[] a = this.a;

if (o == null) {

for (int i = 0; i < a.length; i++)

if (a[i] == null)

return i;

} else {

for (int i = 0; i < a.length; i++)

if (o.equals(a[i]))

return i;

}

return -1;

}

@Override

public boolean contains(Object o) {

return indexOf(o) != -1;

}

@Override

public Spliterator spliterator() {

return Spliterators.spliterator(a, Spliterator.ORDERED);

}

@Override

public void forEach(Consumer super E> action) {

Objects.requireNonNull(action);

for (E e : a) {

action.accept(e);

}

}

@Override

public void replaceAll(UnaryOperator operator) {

Objects.requireNonNull(operator);

E[] a = this.a;

for (int i = 0; i < a.length; i++) {

a[i] = operator.apply(a[i]);

}

}

@Override

public void sort(Comparator super E> c) {

Arrays.sort(a, c);

}

}

該內部類的構造方法如下:

ArrayList(E[] array) {

a = Objects.requireNonNull(array);

}

也就是說Arrays.asList()返回一個final數組,因此不可以改變次數組的大小。當我們試圖用add()或delete()方法在這種列表中添加或刪除元素的時候,會引發數組尺寸的改變。因此在運行時會拋java.lang.UnsupportedOperationException不支持的操作這樣的異常。

總結

以上是生活随笔為你收集整理的java中的asList_Java中的Arrays.asList()方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。