JAVA中的数组和List转换方法场景分析

 更新时间:2026年01月09日 11:21:33   作者:你算哪块小饼干咯  
文章介绍了Java中List与数组之间的转换方法,包括List转数组和数组转List,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧

日常开发时,经常遇到需要List与数组互相转换的场景。
List转换成数组,可以用List的toArray()或者toArray(T[] a)的方法。
数组转换成List,可以用Arrays.asList()或者Collections.addAll()方法。
如果仅仅为了打印数组,不需要把数组转换成List,
可以使用Arrays.toString()方法。

一.List转数组

List转换成数组可以调用toArray方法,可以将List直接转为Object[]数组
这里有两个重载的方法,
一般使用带泛型参数的方法:

Object[] toArray();
<T> T[] toArray(T[] a);

无参数toArray方法,这里注意不能强转,可能会出现报错.

泛型的toArray方法要注意类型必须是包装类型,基本类型是不行的.

二.数组转List

可以使用Arrays.asList()或者Collections.addAll()方法,推荐使用Collections.addAll()方法,这样得到的返回对象可以往里面添加新的元素。

String[] strArray = { "a", "b" };
List<String> strList = Arrays.asList(strArray);

注意该方法的返回值是java.util.Arrays类中一个私有静态内部类java.util.Arrays.ArrayList,
它并非java.util.ArrayList类。
java.util.Arrays.ArrayList类具有set(),get(),contains()等方法,但是不支持添加add()或删除remove()方法,调用这些方法会报错。

如果直接往返回的list添加一个新元素,运行会报错UnsupportedOperationException

strList.add("c");

解决方法是新建一个List对象,并且加入返回的strList,然后再add新元素:

List<String> strListNew = new ArrayList<>(strList);
strListNew.add("new data");

Collections.addAll():

String[] strArray = { "a", "b" };
List<String> strList = new ArrayList<>(strArray.length);
Collections.addAll(strList, strArray);
strList.add("c");

得到的返回对象可以直接添加新的元素。

Java8可用stream流将3种基本类型数组转为List

List<Integer> intList= Arrays.
stream(new int[] { 1, 2,  3}).boxed().collect(Collectors.toList());
List<Long> longList= Arrays.
stream(new long[] { 1, 2, 3 }).boxed().collect(Collectors.toList());
List<Double> doubleList= Arrays.
stream(new double[] { 1, 2, 3 }).boxed().collect(Collectors.toList());
String[] arrays = {"a", "b", "c"};
List<String> stringList= Stream.of(arrays).collect(Collectors.toList());

其他的数据类型short[]byte[]char[]在JDK1.8中目前不支持

到此这篇关于JAVA中的数组和List转换的文章就介绍到这了,更多相关java 数组和list转换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java基础之让你彻底搞懂代理模式

    Java基础之让你彻底搞懂代理模式

    这篇文章主要介绍了Java基础之让你彻底搞懂代理模式,文中有非常详细的代码示例,对正在学习java基础的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • 详解SpringMVC的类型转换及验证方法

    详解SpringMVC的类型转换及验证方法

    在本篇文章里面我们给大家详细分析了SpringMVC的类型转换及验证方法的相关知识,对此有需要的朋友们学习下吧。
    2018-10-10
  • Java工具类实现高效编写报表

    Java工具类实现高效编写报表

    对于报表数据大部分情况下使用写sql的方式为大屏/报表提供数据来源,但是对于某些复杂情况下仅仅使用sql无法实现,这篇文章主要介绍了Java工具类实现高效编写报表
    2022-11-11
  • AOP在SpringBoot项目中的使用场景解读

    AOP在SpringBoot项目中的使用场景解读

    本文介绍如何使用AOP在不同场景下对方法执行前进行逻辑校验,包括对整个包下、特定控制器下以及特定注解修饰的方法进行校验,通过自定义注解和切面实现,展示了AOP的灵活性和强大功能
    2026-01-01
  • Java常用的时间工具类实例

    Java常用的时间工具类实例

    这篇文章主要介绍了Java常用的时间工具类,结合具体实例形式分析了java日期时间的常用转换、判断、输出相关操作技巧,需要的朋友可以参考下
    2017-06-06
  • 详解Java去除json数据中的null空值问题

    详解Java去除json数据中的null空值问题

    这篇文章主要介绍了详解Java去除json数据中的null空值问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Java 详解如何从尾到头打印链表

    Java 详解如何从尾到头打印链表

    在我们平时的代码过程中,链表是我们经常遇到的一个数据结构,它非常的简单,但Java并不能直接将一个链表打印出来,通过这篇文章我们来讲解一下这个问题
    2022-01-01
  • Java 源码重读系列之 HashMap

    Java 源码重读系列之 HashMap

    这篇文章主要为大家介绍了Java源码重读系列之HashMap示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • 使用Guava Cache原理及最佳实践

    使用Guava Cache原理及最佳实践

    文章介绍了GuavaCache,这是一种支持高并发的本地缓存,它支持多种回收策略,如基于容量、时间和引用的回收,并提供了自动加载、定时刷新和显式清除缓存的功能,文章还讨论了GuavaCache的适用场景和使用方法,并通过代码示例和源码分析,帮助读者更好地理解和使用GuavaCache
    2025-02-02
  • java实现ThreadLocal线程局部变量的实现

    java实现ThreadLocal线程局部变量的实现

    本文主要介绍了java实现ThreadLocal线程局部变量的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07

最新评论