1. 程式人生 > >陣列與List的相互轉換

陣列與List的相互轉換

1.List轉換為陣列

直接呼叫ArrayList中的toArray方法就可以實現。

List介面中,toArray有兩個過載的方法:

Object[] toArray();

<T> T[] toArray(T[] a);

可見toArray可以用無入參的方式呼叫,返回一個Object陣列;也可以用指定返回型別的方式呼叫,返回一個指定型別的陣列。

    @Test
    public void test() {
        List<Object> rawList = new ArrayList();
        rawList.add("0"
); rawList.add("1"); String[] arr = rawList.toArray(new String[rawList.size()]); for(String each:arr) { System.out.println(each); } }

2.陣列轉換為List

如果需要將陣列轉為List,只需要使用Arrays.asList方法即可。

    @Test
    public void t5() {
        String[] arr = {"a","b"
,"c"}; List<String> list = Arrays.asList(arr); list.forEach(x -> System.out.println(x)); }

需要注意的是,asList方法是利用傳入引數的型別去建立一個數組,本質上還是一個只是實現了集合的如下方法(size()、toArray()、toArray(T[])、get(int)、set(int,E)、indexOf(Object)、contains(Object))的陣列,所以用asList()裝換成的集合,只能使用如上方法,如果使用其他方法如: add(E),系統將會拋Java.lang.UnsupportedOperationException(不支援請求的操作)的異常。

    public static <T> List<T> asList(T... a) {
        return new ArrayList<>(a);
    }

    /**
     * @serial include
     */
    private static class ArrayList<E> extends AbstractList<E>
        implements RandomAccess, java.io.Serializable