我的编程空间,编程开发者的网络收藏夹
学习永远不晚

List与数组之间的相互转换

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

List与数组之间的相互转换

文章目录

一、前言

  在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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

List与数组之间的相互转换

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

下载Word文档

猜你喜欢

python中 list 与数组的互相转

python中 list 与数组的互相转换(1)list转array    np.array(a)(2)array 转list    a.tolist()
2023-01-31

String和List<String>间的相互转换

本篇文章和大家了解一下String和List间的相互转换。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。目录String和List间相互转换List转String的简单方法String[]和
2023-07-06

python label与one-hot之间的互相转换方式

这篇文章主要介绍了python label与one-hot之间的互相转换方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-02-01

python3中bytes和string之间的互相转换

前言 Python 3最重要的新特性大概要算是对文本和二进制数据作了更为清晰的区分。文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示。Python 3不会以任意隐式的方式混用str和bytes,正是这使得两者的区分
2022-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录