Java 关于使用Arrays.asList()数组转集合的问题
2018-03-23 10:31
609 查看
在使用工具类Arrays.asList()把数组转换成集合时,不能使用其修改集合的相关方法,他的add/remove/clear方法都会抛出UnsupportedOperationException异常。
说明:
asList的返回对象是一个Arrays的内部类,并没有实现集合的修改方法。Arrays.asList体现的是适配器模式,只是转换接口,后台的数据仍然是数组。
String[] str = new String[]{"you", "me"};
List list = Arrays.asList(str);
其中第一种情况:list.add("thanks");会报运行时异常。
第二种情况:如果str[0] = "ganma"; ,那么list.get(0);也会随之改变;
List<Integer> list = new ArrayList<Integer>(Arrays.asList(1,2,5,4,3));
即使用另外的Collection来将自身初始化。
第二:
Colllection<Integer> collection = new ArrayList<Integer>();
Integer[] moreInts = {6,8,4,5,8,4};
Collections.addAll(collection,moreInts);
Collections.addAll(collection,1,5,4,7,8,4,1);
第三:
collection.addAll(Arrays.asList(moreints));
在Java编程思想第四版中表示这三种由上到下为常用较为使用的转化方式。
其中collection.addAll()成员方法只接受另一个Collection对象作为参数,因此他不如asList和Collections.addAll()灵活,因为他们都可以接受可变参数列表。
说明:
asList的返回对象是一个Arrays的内部类,并没有实现集合的修改方法。Arrays.asList体现的是适配器模式,只是转换接口,后台的数据仍然是数组。
String[] str = new String[]{"you", "me"};
List list = Arrays.asList(str);
其中第一种情况:list.add("thanks");会报运行时异常。
第二种情况:如果str[0] = "ganma"; ,那么list.get(0);也会随之改变;
较为实用的正确转化为集合并可以使用集合方法的转化方式:
第一:List<Integer> list = new ArrayList<Integer>(Arrays.asList(1,2,5,4,3));
即使用另外的Collection来将自身初始化。
第二:
Colllection<Integer> collection = new ArrayList<Integer>();
Integer[] moreInts = {6,8,4,5,8,4};
Collections.addAll(collection,moreInts);
Collections.addAll(collection,1,5,4,7,8,4,1);
第三:
collection.addAll(Arrays.asList(moreints));
在Java编程思想第四版中表示这三种由上到下为常用较为使用的转化方式。
其中collection.addAll()成员方法只接受另一个Collection对象作为参数,因此他不如asList和Collections.addAll()灵活,因为他们都可以接受可变参数列表。
相关文章推荐
- Java-Arrays.asList()使用中的问题
- 关于Hibernate中fatch=eager的bag集合(一个java List)使用Criteria查询出现重复记录的问题
- 【Java集合的详细研究2】浅谈Arrays.asList的使用
- 关于java中的List集合的排序问题/Collections.sort()的使用(转)
- java关于集合(list,set,map)的遍历与增强for循环的使用
- JAVA基础学习之 Map集合、集合框架工具类Collections,Arrays、可变参数、List和Set集合框架什么时候使用等(4)
- Java中的Arrays.asList(T... a)相关问题
- 关于数组转换为list的集合的问题
- 黑马程序员_Java第17天知识总结_集合框架的工具类_Collections_Arrays_将数组变成list集合_集合变数组_高级for循环_可变参数
- 使用Arrays的asList方法将数组变成List集合
- java.util.Arrays.asList 的小问题
- java-集合类-(1)ArrayList,toArray(),Arrays.asList()
- Java利用Arrays的asList方法输出数组数据
- Arrays.asList的使用及异常问题
- java关于ArrayList动态数组与静态数组Arrays-元素比较输出最大最小值的使用例子
- Java利用Arrays的asList方法输出数组数据
- Java中关于Arrays.asList()的操作
- Java利用Arrays的asList方法输出数组数据
- java.util.Arrays.asList 的小问题
- 提高你的Java代码质量吧:避免基本类型数组转换列表陷阱(Arrays.asList())