登录  /  注册
首页 > Java > Java基础 > 正文

java中list怎么转为数组?

青灯夜游
发布: 2020-11-02 15:00:33
原创
99979人浏览过
java中list集合转为数组的方法:1、使用无参数toarray方法,语法格式“object[] toarray();”;2、使用支持泛型的toarray方法,语法格式“t[] toarray(t[] a);”。

java中list怎么转为数组?

相关推荐:《Java视频教程

在Java中,经常遇到需要List与数组互相转换的场景。那么list怎么转为数组?下面本篇文章给大家介绍一下。

List转换成数组,可以使用List的toArray()或者toArray(T[] a)方法。

List转换成数组

List转换成数组可以调用toArray方法,

这里有两个重载的方法,

一般使用第2个带泛型参数的方法:

Object[] toArray();
<T> T[] toArray(T[] a);
登录后复制

2.1.无参数toArray方法

Object[] toArray();
登录后复制

这个方法将List直接转为Object[]数组。

Java初学者喜欢用这个方法,

没有参数使用起来很方便,

而且代码编译也没有报错,

错误使用的示例代码如下:

List<String> strList = new ArrayList<>();
strList.add("list-a");
strList.add("list-b");
String[] strArray = (String[]) strList.toArray();
登录后复制

结果一运行,直接报错,

不能将Object[]转化为String[]:

Exception in thread "main" java.lang.ClassCastException: 
[Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
登录后复制

正确使用代码如下:

List<String> strList = new ArrayList<>();
Object[] strArray = strList.toArray();
登录后复制

得到了一个通常情况下没啥用的Object[]。

2.2.支持泛型的toArray方法

<T> T[] toArray(T[] a);
登录后复制

这个方法接收一个类型为 T 的数组,

注意基本类型是不能作为泛型参数的。

如果是使用int[] 类型数组,

需要把 int[] 换成 Integer[] 。

使用的示例代码如下:

List<String> strList = new ArrayList<>();
strList.add("list-a");
strList.add("list-b");
String[] strArray = strList.toArray(new String[strList.size()]);
登录后复制

2.3.toArray方法入参的数组大小

针对如下代码,

分析一下初始化的String数组的大小size,

和List的大小strList.size()的关系,

对于返回值产生的不同影响:

List<String> strList = new ArrayList<>();
strList.add("list-a");
strList.add("list-b");
String[] strArray1 = new String[size];
String[] strArray2 = strList.toArray(strArray1);
登录后复制

2.3.1.size < strList.size()

现在设置size=0,

小于strList.size()=2,

代码修改部分如下:

String[] strArray1 = new String[0];
登录后复制

返回的strArray2和strArray1不是同一个对象。

2.3.2.size = strList.size()

现在设置size=strList.size(),

代码修改部分如下:

String[] strArray1 = new String[strList.size()];
登录后复制

返回的strArray2和strArray1是同一个对象。

所以下面两块代码是等价的,

得到的strArray都是我们期望的结果:

String[] strArray = strList.toArray(new String[strList.size()]);
String[] strArray = new String[strList.size()];
strList.toArray(strArray);
登录后复制

2.3.3.size > strList.size()

现在设置size=strList.size()+1,

代码修改部分如下:

String[] strArray1 = new String[strList.size()+1];
登录后复制

返回的strArray2和strArray1是同一个对象,

但是数组的最后一个元素是null,

如果数组中的元素多于List中的元素,

列表复制完后紧接着的数组末尾被设置为null,

即strArray1[strList.size()]=null,

这对于调用方确定数组的真实长度很有用,

如果使用strList.size()+2初始化数组,

则数组的倒数第二个元素是null。

更多编程相关知识,请访问:编程教学!!

以上就是java中list怎么转为数组?的详细内容,更多请关注php中文网其它相关文章!

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
关于CSS思维导图的课件在哪? 课件
凡人来自于2024-04-16 10:10:18
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 //m.sbmmt.com/ All Rights Reserved | php.cn | 湘ICP备2023035733号