A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jiangweibin2573 中级黑马   /  2014-8-12 01:03  /  1999 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


  1.         public static void main(String[] args) {
  2.                 String[] arr = {"a","b","c","d"};
  3.                 List<String> list = Arrays.asList(arr);
  4.                 list.add("e");
  5.                 System.out.println(list);
  6.         }
  7. 这个为什么运行不了了?那里除了差错呢!
复制代码

14 个回复

倒序浏览
本帖最后由 hejinzhong 于 2014-8-12 01:28 编辑

根据楼上思路:
  1. List<String> list = Arrays.asList(arr);
复制代码

Arrays.asList()会返回一个ArrayList对象,该ArrayList类是Arrays的一个私有静态类,而不是java.util.ArrayList类,java.util.Arrays.ArrayList类有set()、get()、contains()方法,但是没有增加元素的方法,所以它的大小是固定的.
想要创建一个真正的ArrayList类,你应该这样做:
  1. ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(arr));
复制代码

ArrayList的构造方法可以接受一个集合类型,刚好它也是java.util.Arrays.ArrayList的超类。

回复 使用道具 举报
不能直接添加 Arrays.asList(arr);返回的java.util.Arrays$ArrayList  不是Arraylist 得转化下 List<String> list2=new ArrayList<String>(list);
回复 使用道具 举报 1 0
转成List不可以增删。。
回复 使用道具 举报
masai158 发表于 2014-8-12 01:23
转成List不可以增删。。

貌似可以删除
回复 使用道具 举报
Arrays.asList(arr)底层是数组,长度已经固定了,不能进行增删

点评

+3  发表于 2014-8-12 22:17
+2  发表于 2014-8-12 09:08
+1  发表于 2014-8-12 05:30
回复 使用道具 举报
java.lang.UnsupportedOperationException
不支持的操作类型,因为Arraylist的asList(T... a) 返回一个受指定数组支持的固定大小的列表。
大小已经固定,当然不能进行增加元素操作。

其实aslist就是对数组的一个包装而已。
回复 使用道具 举报 1 0
数组转成集合,貌似不可用集合的增删方法,因为数组的长度是固定的,如果使用了增删方法,会报unsupportedOperationException
回复 使用道具 举报

你直接  asList  转的集合,你仔细看看能否增删

  1.                 List<String> stooges = Arrays.asList("Larry", "Moe", "Curly");
  2.                 stooges.remove("Moe");
  3.                 System.out.println(stooges);
  4.                
  5.                 ArrayList<String> stooges1 = new ArrayList<String>(Arrays.asList("Larry", "Moe", "Curly"));
  6.                 stooges1.remove("Moe");
  7.                 System.out.println(stooges1);
复制代码


请问这2个代码的区别在哪里
回复 使用道具 举报
看看,初级学习一下
回复 使用道具 举报
hejinzhong 发表于 2014-8-12 01:04
根据楼上思路:

Arrays.asList()会返回一个ArrayList对象,该ArrayList类是Arrays的一个私有静态类,而不 ...

十分到位,学习了
回复 使用道具 举报
看了半天准备回答,一看楼上的都说的干脆利落,还是匿了吧。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马