论坛首页 入门技术论坛

Arrays.asList转换成List不能调整尺寸

浏览 1702 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-01-22   最后修改:2011-01-22

 

List<Integer> list = Arrays.asList(16,17,18,19,20);
list.set(1, 99);
list.add(21);

 list.set是可以的,但是list.add运行时会获得"Unsupported Operation"错误,理由是底层表示的是数组,因此不能调整尺寸。

 

想讨论下"底层表示的是数组"这句话的意思...

   发表时间:2011-02-22  
JDK源代码已经有描述了:
* @return a list view of the specified array

根据指定的array返回list 视图.
而且如果你asList括号里放的是
Integer[] ints= new Integer[]{16,17,18,19,20};

然后得到List<Integer> list=Arrays.asList(ints);
这个时候你用list.set()是可以,但是如果set的第一个参数大于4或者小于0,那也会报数组越界.

list.set(0,100);

回头再循环一下ints,这个时候原本当作指定array的ints里面的值也随着视图list发生改变而改变.

本人菜鸟..最近才看的JDK源码.今天看到这个问题.感觉很有意思就发表了一下看法,大牛勿取笑.
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics