当前位置 博文首页 > whing123的博客:Java Arrays.asList 数组转list
String s[] = {"aa","bb","cc"};
List<String> sList = Arrays.asList(s);
for(String str:sList){ // 能遍历出各个元素
System.out.println(str);
}
System.out.println(sList.size()); // 为3
int i[] = {11,22,33};
List intList = Arrays.asList(i); // intList中就一个Integer数组类型的对象,整个数组作为一个元素存进去的
for(Object o : intList){ // 就一个元素
System.out.println(o.toString());
}
Integer ob[]={11,22,33};
List<Integer> objList = Arrays.asList(ob); // 数组里的每一个元素都是作为list中的一个元素
for(int a:objList){
System.out.println(a);
}
/*
aa
bb
cc
3
- - - - - - - - - - -
[I@287efdd8
- - - - - - - - - - -
11
22
33
*/
Arrays.asList(),将一个数组转化为一个List对象,这个方法会返回一个ArrayList类型的对象, 这个ArrayList类并非java.util.ArrayList类,而是Arrays类的内部类Arrays.ArrayList,用这个对象对列表进行添加删除操作,就会抛出UnsupportedOperationException异常,因为在Arrays.ArrayList内部中,仍是一个定长数组。
// Arrays.ArrayList内部类中:
private final E[] a;
ArrayList(E[] array) {
a = Objects.requireNonNull(array);
}
// asList()
public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);
}
// 方法1
// java.util.ArrayList
ArrayList<Integer> copyArr = new ArrayList<Integer>(Arrays.asList(ob)); //这样就得到一个新的list,可对其进行add,remove了
copyArr.add(222); // 正常,不会报错
// 方法2
ArrayList<Integer> copyArr = new ArrayList<Integer>(5);
Collections.addAll(copyArr, ob); // 或者新建一个空的list,把要转换的数组用Collections.addAll添加进去
Arrays.asList(ArrayUtils.toObject(i)); // 上边的代码:int i[]={11,22,33}; 达到了想要的效果
转自:Java我人生(陈磊兴)http://blog.csdn.net/chenleixing/article/details/43775127
cs