List 和 陣列 的轉換

干饭达人GoodLucy發表於2024-08-17
import org.junit.jupiter.api.Test;

import java.util.*;

public class T {
    /*
    list 轉 陣列

    toArray()底層是陣列的複製,生成一個新的陣列
    和原來的list底層的舊陣列,是兩個物件。
    所以list的改變不會影響toArray()生成的陣列
    * */
    @Test
    public void listToArray() {
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);

        Integer[] array = list.toArray(new Integer[list.size()]);

        list.add(33);

        System.out.println("----陣列----");
        for (int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
        }

        System.out.println("----list----");
        list.forEach(System.out::println);

        /*執行結果:
         ----陣列----
        1
        2
        ----list----
        1
        2
        33
        * */
    }

    /*
    陣列 轉 list
    
    底層引用同一個陣列物件
    * */
    @Test
    public void arrayToList() {
        Integer[] array = {1, 2};

        List<Integer> list = Arrays.asList(array);
        array[0] = 4;

        //異常UnsupportedOperationException:Arrays.asList()不支援資料的新增和刪除
        //list.add(33);


        System.out.println("----陣列----");
        for (int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
        }

        System.out.println("----list----");
        list.forEach(System.out::println);
        /*
        執行結果:
        ----陣列----
        4
        2
        ----list----
        4
        2
        * */
    }
}

相關文章