Java Arrays.asList 数组转list

来源:互联网 发布:微信整蛊软件 编辑:程序博客网 时间:2024/05/16 09:04
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);}

  • 如果想根据数组得到一个新的 正常的 list,可以循环一个一个添加,也可以:
// 方法1// java.util.ArrayListArrayList<Integer> copyArr = new ArrayList<Integer>(Arrays.asList(ob)); //这样就得到一个新的list,可对其进行add,remove了  copyArr.add(222); // 正常,不会报错
// 方法2ArrayList<Integer> copyArr = new ArrayList<Integer>(5);Collections.addAll(copyArr, ob); // 或者新建一个空的list,把要转换的数组用Collections.addAll添加进去
  • 如果想将基本类型的数组如int[], long[]用asList转成list,那么我们可以选择用apache commons-lang工具包里的数组工具类ArrayUtils类的toObject()方法,非常方便,如下:
Arrays.asList(ArrayUtils.toObject(i)); // 上边的代码:int i[]={11,22,33}; 达到了想要的效果  

这里写图片描述


转自:Java我人生(陈磊兴)http://blog.csdn.net/chenleixing/article/details/43775127

原创粉丝点击