Java 8 中 List 转 int[]

原文地址:List (或ArrayList) 转换为int[]数组 终于搞懂了

import java.util.ArrayList;
import java.util.List;
//list转为数组
public class Main {
    public static void main(String[] args) {//1.一维字符串list转为数组
        List<String> list1=new ArrayList<>();
        list1.add("hello");
        list1.add("world");
        list1.add("!");
        String[] strings=new String[3];
        strings=list1.toArray(new String[0]);//传入参数,表示强转

        //2.一维数字list转为数组
        List<Integer> list2=new ArrayList<>();
        list2.add(1);
        list2.add(2);
        list2.add(3);
        int[] arr=new int[3];
        //下一行代码是仿照String类型写的。但是报错'toArray(T[])' in 'java.util.List' cannot be applied to '(int[])'
        //原因:toArray()方法应该传入的参数T是泛型,但是泛型必须是引用类型,不能是基本类型(比如int)
        // arr=list.toArray(new int[0]);

        //解决方法1:采用流式处理Stream进行处理
        arr=list2.stream().mapToInt(Integer::valueOf).toArray();

        //解决方法2:声明一个Integer类型的数组
        Integer[] arr2=new Integer[3];
        arr2=list2.toArray(new Integer[0]);

        for(int num:arr)
            System.out.println(num);//1 2 3
        for(int num:arr2)
            System.out.println(num);//1 2 3


        //3.二维数字list转为数组
        List<int[]> list3=new ArrayList<>();
        list3.add(new int[]{0,111});
        list3.add(new int[]{1,222});
        //这里的泛型T为:int[],是引用类型,所以不会报错
        int[][] arr2D=list3.toArray(new int[0][0]);
        for (int[] n:arr2D)
            System.out.println(n[0]+" " +n[1]);//0 111    1  222
    }
}
posted @ 2023-01-17 10:08  Frodo1124  阅读(561)  评论(0编辑  收藏  举报