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

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

主要介绍Java中Java 中数组Array和列表List的转换。

一、数组Array转列表List

1.使用Collections.addAll()方法

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

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方法,但该种方式只针对引用对象,不针对基本数据类型。

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

3.使用Stream方法

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

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);

代码地址:https://github.com/yangnk/JavaHelloworld/blob/58a4ad579d5c5c3467cf89aa25bbd7f55141e7fe/src/main/java/lang/ArrToListTest.java

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

二、列表转数组

1.使用Stream方法

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

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://github.com/yangnk/JavaHelloworld/blob/master/src/main/java/lang/LIstToArrTest.java

参考资料

  1. Java数组转List的三种方式及对比:https://blog.csdn.net/x541211190/article/details/79597236
  2. int数组和Integer数组以及List<Integer>集合三者的相互转化:https://blog.csdn.net/ASDQWE09876/article/details/79271992


目录
相关文章
|
10月前
|
存储 缓存 Java
Java数组全解析:一维、多维与内存模型
本文深入解析Java数组的内存布局与操作技巧,涵盖一维及多维数组的声明、初始化、内存模型,以及数组常见陷阱和性能优化。通过图文结合的方式帮助开发者彻底理解数组本质,并提供Arrays工具类的实用方法与面试高频问题解析,助你掌握数组核心知识,避免常见错误。
|
9月前
|
Java
Java 数组学习笔记
本文整理Java数组常用操作:遍历、求和、查找、最值及二维数组行求和等典型练习,涵盖静态初始化、元素翻倍、去极值求平均等实例,帮助掌握数组基础与应用。
|
11月前
|
存储 Java 索引
java 数组
在 Java 中,数组是一种数据结构,用于存储多个相同类型的数据元素。数组的大小一旦创建后就不能改变,因此它是固定长度的。Java 数组是一种 对象,即使它存储的值是基本类型(如 int、double 等),它也是一个对象引用。
243 0
|
11月前
|
测试技术 PHP 开发者
PHP 数组查找:为什么 `isset()` 比 `in_array()` 快得多?
PHP 数组查找:为什么 `isset()` 比 `in_array()` 快得多?
|
人工智能 Java
Java 中数组Array和列表List的转换
本文介绍了数组与列表之间的相互转换方法,主要包括三部分:1)使用`Collections.addAll()`方法将数组转为列表,适用于引用类型,效率较高;2)通过`new ArrayList&lt;&gt;()`构造器结合`Arrays.asList()`实现类似功能;3)利用JDK8的`Stream`流式计算,支持基本数据类型数组的转换。此外,还详细讲解了列表转数组的方法,如借助`Stream`实现不同类型数组间的转换,并附带代码示例与执行结果,帮助读者深入理解两种数据结构的互转技巧。
1033 1
Java 中数组Array和列表List的转换
|
存储 人工智能 Java
打乱数组内容引发的问题( Java)
本文介绍了两种实现数组随机打乱的方法,并深入探讨了Java中原始数据类型与对象类型的差异。方法一通过自定义随机数交换数组元素位置,方法二借助`Collections.shuffle()`函数完成数组打乱。同时,文章详细解析了`int`和`Integer`的区别,包括声明方式、内存占用、初始化以及对象特性等,并讲解了自动装箱与拆箱的功能,帮助读者更好地理解Java的基础知识。
220 0
|
存储 Java 数据挖掘
Java 中数组的多种定义方式
本文深入解析了Java中数组的多种定义方式,涵盖基础的`new`关键字创建、直接初始化、动态初始化,到多维数组、`Arrays.fill()`方法以及集合类转换为数组等高级用法。通过理论与实践结合的方式,探讨了每种定义方法的适用场景、优缺点及其背后的原理,帮助开发者掌握高效、灵活的数组操作技巧,从而编写更优质的Java代码。
774 0
|
人工智能 JSON Java
列表结构与树结构转换分析与工具类封装(java版)
本文介绍了将线性列表转换为树形结构的实现方法及工具类封装。核心思路是先获取所有根节点,将其余节点作为子节点,通过递归构建每个根节点的子节点。关键在于节点需包含 `id`、`parentId` 和 `children` 三个属性。文中提供了两种封装方式:一是基于基类 `BaseTree` 的通用工具类,二是使用函数式接口实现更灵活的方式。推荐使用后者,因其避免了继承限制,更具扩展性。代码示例中使用了 Jackson 库进行 JSON 格式化输出,便于结果展示。最后总结指出,理解原理是进一步优化和封装的基础。
485 0
|
安全 Java
java线程之List集合并发安全问题及解决方案
java线程之List集合并发安全问题及解决方案
2204 1

热门文章

最新文章

  • 1
    PHP 数组查找:为什么 `isset()` 比 `in_array()` 快得多?
    307
  • 2
    Java 中数组Array和列表List的转换
    1033
  • 3
    JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)
    749
  • 4
    通过array.reduce()实现数据汇总、条件筛选和映射、对象属性的扁平化、转换数据格式、聚合统计、处理树结构数据和性能优化,reduce()的使用详解(附实际应用代码)
    1589
  • 5
    通过array.some()实现权限检查、表单验证、库存管理、内容审查和数据处理;js数组元素检查的方法,some()的使用详解,array.some与array.every的区别(附实际应用代码)
    692
  • 6
    通过array.every()实现数据验证、权限检查和一致性检查;js数组元素检查的方法,every()的使用详解,array.some与array.every的区别(附实际应用代码)
    494
  • 7
    多维数组操作,不要再用遍历循环foreach了!来试试数组展平的小妙招!array.flat()用法与array.flatMap() 用法及二者差异详解
    333
  • 8
    别再用双层遍历循环来做新旧数组对比,寻找新增元素了!使用array.includes和Set来提升代码可读性
    334
  • 9
    Array.forEach实战详解:简化循环与增强代码可读性;Array.forEach怎么用;面对大量数据时怎么提高Array.forEach的性能
    218
  • 10
    深入理解 JavaScript 中的 Array.find() 方法:原理、性能优势与实用案例详解
    800