Java List 和 数组的互相转换


#Java 笔记


List 转换成数组

使用 List 的 toArray() 方法转换成 Object 数组

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class ListArrayTest {

    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("北京");
        list.add("上海");
        System.out.println("List: " + list);

        Object[] arr = list.toArray();
        System.out.println("数组:" + arr);
        System.out.println("数组内容:" + Arrays.toString(arr));
    }

}

使用 List 的 <T> T[] toArray(T[] a) 方法转换成同类型数组

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class ListArrayTest {

    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("北京");
        list.add("上海");
        System.out.println("List: " + list);

        String[] arr = new String[list.size()];
        String[] arr2 = list.toArray(arr);

        System.out.println( "arr 和 arr2 是否相同:" + (arr == arr2) );
        System.out.println("数组内容:" + Arrays.toString(arr));
        System.out.println("数组内容:" + Arrays.toString(arr2));
    }

}

运行结果:

List: [北京, 上海]
arr 和 arr2 是否相同:true
数组内容:[北京, 上海]
数组内容:[北京, 上海]

如果参数中的数组长度不足,toArray 函数不会填充作为参数的数组,而是新建一个数据填充,然后返回:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class ListArrayTest {

    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("北京");
        list.add("上海");
        System.out.println("List: " + list);

        String[] arr = new String[0];
        String[] arr2 = list.toArray(arr);

        System.out.println( "arr 和 arr2 是否相同:" + (arr == arr2) );
        System.out.println("数组内容:" + Arrays.toString(arr));
        System.out.println("数组内容:" + Arrays.toString(arr2));
    }

}

结果:

List: [北京, 上海]
arr 和 arr2 是否相同:false
数组内容:[]
数组内容:[北京, 上海]

数组转换为 List

import java.util.Arrays;
import java.util.List;

public class ListArrayTest {

    public static void main(String[] args) {
        String[] arr = new String[] {"北京", "上海"};
        List<String> list = Arrays.asList(arr);
        System.out.println("数组内容:" + Arrays.toString(arr));
        System.out.println("List: " + list);
    }

}

运行结果:

数组内容:[北京, 上海]
List: [北京, 上海]


( 本文完 )