数组和list之间的相互转换

素颜马尾好姑娘i 2023-10-01 19:05 101阅读 0赞

数组和list之间的相互转换

  • 数组转list
    • 遍历
    • Arrays.asList()方法(有局限)
    • Collections.addAll()
    • java8 stream流
  • list转数组
    • toArray()
    • toArray(T[] a)(推荐)

数组转list

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

遍历

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

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

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

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

在这里插入图片描述

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

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

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

在这里插入图片描述

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

Collections.addAll()

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

java8 stream流

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

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

list转数组

toArray()

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

  1. ArrayList<String> list = new ArrayList<>();
  2. list.add("q");
  3. String[] objects = (String[])list.toArray();
  4. for (String object : objects) {
  5. System.out.println(object);
  6. }

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

  1. ArrayList<String> list = new ArrayList<>();
  2. list.add("q");
  3. Object[] objects = list.toArray();
  4. for (Object object : objects) {
  5. System.out.println(object);
  6. }

toArray(T[] a)(推荐)

  1. ArrayList<String> list = new ArrayList<>();
  2. list.add("q");
  3. String[] strings = new String[list.size()];
  4. String[] strings1 = list.toArray(strings);
  5. System.out.println(Arrays.toString(strings1));

发表评论

表情:
评论列表 (有 0 条评论,101人围观)

还没有评论,来说两句吧...

相关阅读