数组和list之间的相互转换

数组转list

注意:
在数组转list过程中,如果数组是8大基本数据类型,将数据类型转为对应的封装类,避免转换为list后存储元素是数组而不是数组的元素。

遍历

 int[] arr = {2, 0, 4, 9, 3, 6, 8, 7, 1, 5, 3};
ArrayList<Object> list = new ArrayList<>();
for (int arry:arr) {
    list.add(arry);
}

Arrays.asList()方法(有局限)

数组如果是原始数据类型,需要转为封装类,如int 转为Integer
如果使用原始数据类型直接使用,输出的是地址,因为list集合存放的是数组

 int[] arr = {2, 0, 4, 9, 3, 6, 8, 7, 1, 5, 3};
  //集合封装的是int[]
List<int[]> ints = Arrays.asList(arr);
Arrays.asList(arr).forEach(System.out::println);

在这里插入图片描述

 Integer[] arr = {2, 0, 4, 9, 3, 6, 8, 7, 1, 5, 3};
 //集合封装的是Integer
  List<Integer> integers = Arrays.asList(arr);
 Arrays.asList(arr).forEach(System.out::println);

在这里插入图片描述
还有需要注意的是:

 Integer[] arr = {2, 0, 4, 9, 3, 6, 8, 7, 1, 5, 3};
  List<Integer> integers = Arrays.asList(arr);
 integers.add(55);
 Arrays.asList(arr).forEach(System.out::println);

在这里插入图片描述

通过 Arrays.asList() 方式,将数组转换List后,不能对List增删,只能查改,否则抛异常。

Collections.addAll()

 Integer[] arr = {2, 0, 4, 9, 3, 6, 8, 7, 1, 5, 3};
    ArrayList<Object> list = new ArrayList<>(arr.length);
    Collections.addAll(list,arr);
    list.add("ss");
    list.forEach(System.out::println);

java8 stream流

可以使用流stream来将下列3种数组快速转为List,分别是int[]、long[]、double[],其他short[]、byte[]、char[],在JDK1.8中暂不支持。

  Integer[] arr = {2, 0, 4, 9, 3, 6, 8, 7, 1, 5, 3};
      List<Integer> collect = Arrays.stream(arr).collect(Collectors.toList());
     collect.forEach(System.out::println);

list转数组

toArray()

直接使用toArray()不带参方法但是其返回值类型为Object,在进行强转的时候会报出java.lang.ClassCastException类转换异常

   ArrayList<String> list = new ArrayList<>();
        list.add("q");

        String[] objects = (String[])list.toArray();
        for (String object : objects) {
            System.out.println(object);
        }

在这里插入图片描述
如果换成Object则没问题

  ArrayList<String> list = new ArrayList<>();
        list.add("q");

        Object[] objects = list.toArray();
        for (Object object : objects) {
            System.out.println(object);
        }

toArray(T[] a)(推荐)

 ArrayList<String> list = new ArrayList<>();
    list.add("q");
    String[] strings = new String[list.size()];
    String[] strings1 = list.toArray(strings);
    System.out.println(Arrays.toString(strings1));
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值