【Java】实现List和数组的相互转换

背景

刷算法的时候经常遇到要将List和数组进行转换的情况,这篇文章就对List和数组相互转换的方法做个整理。

相同类型数据的集合转List

Java9之后可以使用以下方法将一堆相同类型的数据的集合转为List

class Test{
    public static void main(String[] args){
        List<Integer> integers = List.of(1, 2, 3);
        List<String> strs = List.of("a", "b", "c");
    }
}

List转数组

方法一(推荐):使用List的实例方法toArray

class Test{
    public static void main(String[] args){
        List<Integer> integers = List.of(1, 2, 3);
        //无参数,返回Object对象数组
        Object[] objects = integers.toArray();

        //有参数,传入对应类型的数组,不能是基本数据类型,因为参数是泛型数组 T[] a
        Integer[] integers1 = integers.toArray(new Integer[0]);
        Integer[] integers2 = integers.toArray(new Integer[integers.size()]);
        /*
        * 当 List 的实际元素数量小于或等于提供的数组长度时,
        * 会直接使用提供的数组来存储元素。
        * 如果实际元素数量大于提供的数组长度,会创建一个新的合适长度的数组来存储元素。
        * 所以传入的数组的大小可以是0也可以是integers.size(),也可以更大
        * */
    }
}

方法二:使用流结合方法引用

Java8后支持流

class Test{
    public static void main(String[] args){
        List<Integer> integers = List.of(1, 2, 3);
        Integer[] integers1 = integers.stream().toArray(Integer[]::new);
    }
}

数组转List

方法一(推荐):使用Arrays.asList方法

class Test{
    public static void main(String[] args){
        //注意!!!如果是基本类型的数组则整体成为List中的一个元素
        int[] integers=new int[]{1,2,3};
        List<int[]> ints = Arrays.asList(integers);
        
        //如果是引用类型,则是我们希望的结果:数组中的每个元素成为list中的每一个元素
        Integer[] integers1=new Integer[]{1,2,3};
        List<Integer> integers2 = Arrays.asList(integers1);
    }
}

方法二:使用流

同样Java8后支持

class Test{
    public static void main(String[] args){
        //这种方式只适合引用类型的数组
        Integer[] integers=new Integer[]{1,2,3};
        List<Integer> collect = Arrays.stream(integers).collect(Collectors.toList());
    }
}

如果有别的方式,欢迎在评论区讨论!!!

开发入门中,欢迎指教~

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值