相关推荐:《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怎么转为数组?的详细内容。
