1. 程式人生 > >Java基本型別陣列轉ArrayList

Java基本型別陣列轉ArrayList

先來看原始碼

  • 當我們呼叫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);
    }
}