iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >List与数组之间的相互转换
  • 413
分享到

List与数组之间的相互转换

java 2023-09-04 10:09:37 413人浏览 八月长安
摘要

文章目录 一、前言二、List列表与对象数组(一)对象List转对象数组1、toArray()方法2、Stream流的toArray()方法3、for循环 (二)、对象数组转对象Lis

文章目录

一、前言

  在Java编码中,我们经常会遇到List与数组的转换,包括对象List与对象数组的转换,以及对象List与基本数据类型数组的转换,下面详细介绍多种转换方式。


二、List列表与对象数组

  List列表中存储对象,如ListListList,对象数组中同样存储相应的对象,如Integer[]、String[]、Person[],对象数组与对象List的转换可通过如下方式实现:


(一)对象List转对象数组

1、toArray()方法

  直接调用对象List的toArray()方法转换为对象数组,该方法的参数是T[],因此需要传入对应的对象数组构造函数,指定数组的长度,如下所示:

ArrayList<Integer> integersList = new ArrayList<>(Arrays.asList(1,2,3)); // 1、toArray()方法Integer[] integersArrau = integersList.toArray(new Integer[integersList.size()]);

2、Stream流的toArray()方法

  通过Stream流的toArray()方法,传入参数是对应对象的构造方法的方法引用,使用方式如下所示:

ArrayList<Integer> integersList = new ArrayList<>(Arrays.asList(1,2,3));// 2、Stream流的toArray()方法Integer[] integersArray2 = integersList.stream().toArray(Integer[]::new);

  这个toArray()方法是Stream类下的,该方法说明如下所示:

<A> A[] toArray(IntFunction<A[]> generator);

  该方法传入一个函数式接口,该接口对应一个方法引用,作用是创建一个新的指定类型和长度的数组,因此我们传入的参数就是一个Integer[]数组的构造方法的方法引用,最终得到的也就是一个Integer[]数组。


3、for循环

  过于简单,不再赘述。


(二)、对象数组转对象List

1、使用Arrays.asList()

  该方法通过传入一个对象数组,最后转换为一个对象List,如下所示:

Integer[] integersArray = {1, 2, 3};// 1、使用Arrays.asList()List<Integer> integersList = Arrays.asList(integersArray);

  asList方法传入的参数是一个可变参数,因此既可以传入多个参数,也可以传入一个数组,如下所示:

@SafeVarargs@SuppressWarnings("varargs")public static <T> List<T> asList(T... a) {    return new ArrayList<>(a);}

2、使用Collections.addAll()

  通过Collections集合类的static方法将一个对象数组转换为对象List,注意首先要创建出一个对象List,使用方式如下所示:

Integer[] integersArray = {1, 2, 3};// 2、使用Collections.addAll()ArrayList<Integer> integersList2 = new ArrayList<>();Collections.addAll(integersList2,integersArray);

3、使用Stream中的Collector

  jdk8之后可以使用Stream流来执行转换操作,通过Stream流的终结操作collect来指定将要转换得到的List:

Integer[] integersArray = {1, 2, 3};// 3、使用Stream中的CollectorList<Integer> integersList3 = Arrays.stream(integersArray).collect(Collectors.toList());

4、for循环

  过于简单,不再赘述。


三、List列表与基本数据类型数组

  上面我们介绍了对象List列表与对象数组之间的转换,但是有些情况需要直接将对象List转换为基本数据类型数组,如Listint[]这种情况,下面详细介绍。


(一)、对象List转基本数据类型数组

1、Stream流执行转换

  通过Stream流执行转换,如List转换为int[],通过Stream流的mapToInt()可将每个Integer转换为int,再输出为int数组,如下所示:

ArrayList<Integer> integersList = new ArrayList<>(Arrays.asList(1,2,3));// 1、Stream流执行转换// 方法引用int[] arrays1 = integersList.stream().mapToInt(Integer::intValue).toArray();// lambda表达式int[] arrays2 = integersList.stream().mapToInt(i -> i).toArray();

2、for循环

  过于简单,不再赘述。


(二)、基本数据类型数组转对象List

1、Stream流转换

  以int[]数组来举例,通过Stream流的mapToObj()方法先将int[]数组中每个int值转换为Integer包装类,再通过collect执行终结操作转换为Integer的List。

int[] integersArray = {1, 2, 3};// 1、Stream流转换List<Integer> integersList = Arrays.stream(integersArray).mapToObj(Integer::new).collect(Collectors.toList());

2、for循环

  for循环是最简单、好用的方式,不再赘述。

来源地址:https://blog.csdn.net/Mrwxxxx/article/details/127834942

--结束END--

本文标题: List与数组之间的相互转换

本文链接: https://www.lsjlt.com/news/393342.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作