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);
}

  • 如果想根据数组得到一个新的 正常的 list,可以循环一个一个添加,也可以:
// 方法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添加进去
  • 如果想将基本类型的数组如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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值