Java 中数组Array和列表List的转换

简介: 本文介绍了数组与列表之间的相互转换方法,主要包括三部分:1)使用`Collections.addAll()`方法将数组转为列表,适用于引用类型,效率较高;2)通过`new ArrayList<>()`构造器结合`Arrays.asList()`实现类似功能;3)利用JDK8的`Stream`流式计算,支持基本数据类型数组的转换。此外,还详细讲解了列表转数组的方法,如借助`Stream`实现不同类型数组间的转换,并附带代码示例与执行结果,帮助读者深入理解两种数据结构的互转技巧。

一、数组Array转列表List

1.使用Collections.addAll()方法

使用Collections.addAll()方法,返回的List可以执行新增add方法,但该种方式只针对引用对象,不针对基本数据类型,该种方法效率较高,推荐用法。

java

体验AI代码助手

代码解读

复制代码

int[] arr = new int[]{1, 2, 3};
Integer[] integersArr = new Integer[]{1, 2, 3};
String[] stringsArr = new String[]{"aa", "bb", "cc"};

//方法1:使用Collections.addAll()方法,可以执行新增add方法,只针对引用对象,效率较高,【推荐用法】
List<Integer> list = new ArrayList<>(integersArr.length);
Collections.addAll(list, integersArr);
list.add(22);
System.out.println("list = " + list);

List<String> list01 = new ArrayList<>(stringsArr.length);
Collections.addAll(list01, stringsArr);
list01.add("dd");
System.out.println("list01 = " + list01);

2.使用new ArrayList<>()构造器方法

new ArrayList<>()构造器可以传入Arrays.asList(integersArr)生成的List,这种方式也可以执行新增add方法,但该种方式只针对引用对象,不针对基本数据类型。

java

体验AI代码助手

代码解读

复制代码

List<Integer> list1 = new ArrayList<>(Arrays.asList(integersArr));
list1.add(11);
System.out.println("list1 = " + list1);

3.使用Stream方法

在JDK8的Stream流式计算中,可以对int[],long[],double[]这类基本数据类型数组转换为对于包装类型的数组,当然直接对包装类型的数组也可以转换成列表形式。所以这种方法的优势是可以转换基本数据类型。

java

体验AI代码助手

代码解读

复制代码

List<Integer> list2 = Arrays.stream(arr).boxed().collect(Collectors.toList());
System.out.println("list2 = " + list2);

List<Integer> list21 = Arrays.stream(integersArr).collect(Collectors.toList());
System.out.println("list21 = " + list21);

代码地址:github.com/yangnk/Java…

以上3种转换的执行结果为:

二、列表转数组

1.使用Stream方法

将List转为Array主要使用的Stream方法,需要重点注意的是List转换为int[]和Integer[]有较大区别。

java

体验AI代码助手

代码解读

复制代码

List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);

//List<Integer> --> int[]
int[] ints = list.stream().mapToInt(Integer::intValue).toArray();
//List<Integer> --> Integer[]
Integer[] integersArr = list.toArray(new Integer[list.size()]);

//int[]--> Integer[]
Integer[] integersArr1 = Arrays.stream(ints).boxed().toArray(Integer[]::new);
//Integer[] --> int[]
 int[] ints1 = Arrays.stream(integersArr).mapToInt(Integer::intValue).toArray();

System.out.println("ints = " + Arrays.toString(ints));
System.out.println("integersArr = " + Arrays.toString(integersArr));
System.out.println("integersArr1 = " + Arrays.toString(integersArr1));
System.out.println("ints1 = " + Arrays.toString(ints1));

执行结果:

转载来源:https://juejin.cn/post/7277495542044901430

相关文章
|
12月前
|
存储 缓存 Java
Java数组全解析:一维、多维与内存模型
本文深入解析Java数组的内存布局与操作技巧,涵盖一维及多维数组的声明、初始化、内存模型,以及数组常见陷阱和性能优化。通过图文结合的方式帮助开发者彻底理解数组本质,并提供Arrays工具类的实用方法与面试高频问题解析,助你掌握数组核心知识,避免常见错误。
|
11月前
|
Java
Java 数组学习笔记
本文整理Java数组常用操作:遍历、求和、查找、最值及二维数组行求和等典型练习,涵盖静态初始化、元素翻倍、去极值求平均等实例,帮助掌握数组基础与应用。
|
存储 Java 索引
java 数组
在 Java 中,数组是一种数据结构,用于存储多个相同类型的数据元素。数组的大小一旦创建后就不能改变,因此它是固定长度的。Java 数组是一种 对象,即使它存储的值是基本类型(如 int、double 等),它也是一个对象引用。
270 0
|
前端开发 Java
java前端:删除数组中指定元素的方法
java前端:删除数组中指定元素的方法
375 1
|
存储 Java 索引
Java快速入门之数组、方法
### Java快速入门之数组与方法简介 #### 一、数组 数组是一种容器,用于存储同种数据类型的多个值。定义数组时需指定数据类型,如`int[]`只能存储整数。数组的初始化分为静态和动态两种: - **静态初始化**:直接指定元素,系统自动计算长度,如`int[] arr = {1, 2, 3};` - **动态初始化**:手动指定长度,系统给定默认值,如`int[] arr = new int[3];` 数组访问通过索引完成,索引从0开始,最大索引为`数组.length - 1`。遍历数组常用`for`循环。常见操作包括求和、找最值、统计特定条件元素等。
|
存储 缓存 算法
提高 Java 数组性能的方法
【10月更文挑战第19天】深入探讨了提高 Java 数组性能的多种方法。通过合理运用这些策略,我们可以在处理数组时获得更好的性能表现,提升程序的运行效率。
607 157
|
Java 索引
Java系列 之 Java复制(拷贝)数组的4种方法:arraycopy()方法、clone() 方法、copyOf()和copyOfRan
这篇文章介绍了Java中数组复制的四种方法:`Arrays.copyOf()`、`Arrays.copyOfRange()`、`System.arraycopy()`和`clone()`方法,以及它们的使用场景和示例代码。
|
存储 Java 容器
Java数组的初始化方法
Java数组的初始化方法
|
存储 Java
Java数组与带参数方法:定义、调用及实践
Java数组与带参数方法:定义、调用及实践
362 1