Java基本型別陣列轉ArrayList
阿新 • • 發佈:2018-12-27
先來看原始碼
- 當我們呼叫Arrays.asList(array) 時,實際是執行了包可見的ArrayList的建構函式(注意通常這個建構函式對使用者是不可見的,所以不能通過
List list = new ArrayList(array)來進行轉換
) - 由於a是一個E[]陣列,E又是ArrayList的泛型,所以我們傳入的實參array必須是物件陣列,或者物件列表
- 如果傳入的是基本型別陣列,整個陣列會被當做一個物件,從而
Arrays.asList(new char[]{'a','b'});
轉換的型別為List<char[]>
public static <T> List<T> asList (T... a) {
return new ArrayList<>(a);
}
ArrayList(E[] array) {
if (array==null)
throw new NullPointerException();
a = array;
}
private final E[] a;
private static class ArrayList<E> extends AbstractList<E>
正確的轉換方式
利用自動裝箱機制,迴圈新增元素
public class Demo {
public static void main(String[] args) {
List<Character> list = new ArrayList<Character>();
char[] chs = new char[]{'a', 'b'};
for (Character ch : chs) {
list.add(ch);
}
System.out.println(list);
}
}