数组转List以及List转数组
最近做项目由于要新旧系统整合,遇到了数组和List的转换问题,下面参照网上的资料进行了整理,废话不多说,直接上代码。
public class List2Array {
public static void main(String[] args) {
/**
* List转数组
*/
ArrayList<String> list = new ArrayList<String>();
String[] strings = new String[list.size()];
list.add("1");
list.add("2");
list.add("3");
strings = list.toArray(strings);
for(String s:strings){
System.out.println(s);
}
System.out.println("-------------");
/**
* 数组转List
*/
//在使用数组转List的时候不建议对基础类型进行转换,因为会把数组作为一个单独的对象返回(即下文注释的部分)
//如果需要对基础类型数组进行转换,可以用apache提供的ArrayUtils工具类将基础类型数组转换成Object。
int[] i = {11,22,33};
List<Object> intList = Arrays.asList(ArrayUtils.toObject(i));
//List<Object> intList = Arrays.asList(i);
for(Object j:intList){
System.out.println(j.toString());
}
System.out.println(intList.size());
System.out.println("-------------");
String s[] = {"aa","bb","cc"};
//如果list直接等于aslist返回的结果,则无法进行add操作,会报不支持add操作的错误(尽管编译时候不会报错)
List<String> sList = new ArrayList<String>(Arrays.asList(s));
//List<String> sList = Arrays.asList(s);
sList.add("dd");
for(String str:sList){
System.out.println(str);
}
System.out.println(sList.size());
System.out.println("-------------");
}
}
下面贴出运行时的结果,分为正确代码和错误代码两种结果:
- 正确结果:
1
2
3
-------------
11
22
33
3
-------------
aa
bb
cc
dd
4
-------------
- 错误结果
1
2
3
-------------
[I@15db9742
1
-------------
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.add(Unknown Source)
at java.util.AbstractList.add(Unknown Source)
at list2array.List2Array.main(List2Array.java:44)