18.1集合转数组
集合转成数组,可以使用Collection的toArray(T[]t)方法,此方法可以将集合转成与参数中传入的数组类型一致的数组。
如:
import java.util.ArrayList;
import java.util.Collections;
public class CollectionToArray {
public static void main(String[] args) {
ArrayList al=new ArrayList();
al.add("abc1");
al.add("abc2");
al.add("abc3");
al.add("abc4");
String[]strarr=al.toArray(new String[al.size()]);
for(String str:strarr){
System.out.println(str);
}
}
}
/*
abc1
abc2
abc3
abc4*/
注意:集合转数组,使用Collection接口中的toArray(T[] t)方法。此方法传入一个什么类型的数组,就把集合转成什么类型数组。
当方法中接收的数组的长度如果小于集合的长度,则会创建一个与集合长度一样的数组;
当方法中接收的数组的长度如果大于集合的长度,则会按参数创建一个参数长度的数组,多的角标位置用null值填补。
所以,一般情况最好是创建一个与集合长度一样的数组,数组的长度可以使用,集合的size()来指定。
18.2数组转集合
数组转集合的方法,使用Arrays类中的静态方法asList(T…a),此方法可以将一个数组,转成List集合。
如:
import java.util.List;
import java.util.Arrays;
public class CollectionToArray {
public static void main(String[] args) {
String[]strarr=new String[]{"abc1","abc2","abc3","abc4"};
List list=Arrays.asList(strarr);
for(String str:list){
System.out.println(str);
}
}
}
/*
abc1
abc2
abc3
abc4
*/
注意:数组转集合后,是不能使用集合中的增删方法的,因为数组的长度是固定的,转成集合后,集合的长度也是固定的,不能进行元素的增删。否则会抛出异常。
如:
import java.util.List;
import java.util.Arrays;
publicclass CollectionToArray {
publicstaticvoid main(String[] args) {
String[]strarr=new String[]{"abc1","abc2","abc3","abc4"};
List list=Arrays.asList(strarr);
list.add("abc5");//数组转集合后,对集合进行添加元素。
for(String str:list){
System.out.println(str);
}
}
}
异常信息:
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:148)
at java.util.AbstractList.add(AbstractList.java:108)
at 集合与数组互转.CollectionToArray.main(CollectionToArray.java:11)
数组转集合的其它注意事项:
1,当数组中的元素是基本数据类型时,数组转成集合后,会把整个数组作为集合中的一个元素进行存储。
如:
import java.util.List;
import java.util.Arrays;
public class CollectionToArray {
public static void main(String[] args) {
int[]arr={1,2,3,4,5};//数组中的元素是基本数据类型
List list=Arrays.asList(arr);
for(Object str:list){
System.out.println(str);
}
}
}
/*
* 打印结果:
[I@1d86fd3
*/
2,当数组中的元素的引用数据类型时,数组转成集合后,会把数组中的元素作为集合的元素进行存储。
如:
import java.util.List;
import java.util.Arrays;
public class CollectionToArray {
public static void main(String[] args) {
Integer[] arr={1,2,3,4,5};//数组中的元素是引用数据类型。
List list=Arrays.asList(arr);
for(Object str:list){
System.out.println(str);
}
}
}
/*
* 打印结果:
1
2
3
4
5
*/
---------------------- ASP.Net+Android+IOS开发、 .Net培训、期待与您交流! ----------------------