浏览 1703 次
精华帖 (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"错误,理由是底层表示的是数组,因此不能调整尺寸。
想讨论下"底层表示的是数组"这句话的意思... 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间: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源码.今天看到这个问题.感觉很有意思就发表了一下看法,大牛勿取笑. |
|
返回顶楼 | |