天天看點

通過 Arrays.asList(strArray) 方式,将數組轉換List

通過 Arrays.asList(strArray) 方式,将數組轉換List

通過 Arrays.asList(strArray) 方式,将數組轉換List後,不能對List增删,隻能查改,否則抛異常。

關鍵代碼:List list = Arrays.asList(strArray);

private void testArrayCastToListError() {
  String[] strArray = new String[2];
  List list = Arrays.asList(strArray);
  //對轉換後的list插入一條資料
  list.add("1");
  System.out.println(list);
 }           

複制

執行結果:

Exception in thread "main" java.lang.UnsupportedOperationException
 at java.util.AbstractList.add(AbstractList.java:148)
 at java.util.AbstractList.add(AbstractList.java:108)
 at com.darwin.junit.Calculator.testArrayCastToList(Calculator.java:19)
 at com.darwin.junit.Calculator.main(Calculator.java:44)           

複制

程式在list.add(“1”)處,抛出異常:UnsupportedOperationException。

原因解析:Arrays.asList(strArray)傳回值是java.util.Arrays類中一個私有靜态内部類java.util.Arrays.ArrayList,它并非java.util.ArrayList類。java.util.Arrays.ArrayList類具有 set(),get(),contains()等方法,但是不具有添加add()或删除remove()方法,是以調用add()方法會報錯。

使用場景:Arrays.asList(strArray)方式僅能用在将數組轉換為List後,不需要增删其中的值,僅作為資料源讀取使用。