关与java中Arrays.asList(T...t),用Collection接收一个asList返回的ArrayList出现问题……

Collection<Integer>cs=Arrays.asList(1,2,3,4,5);//Collection<Integer>cs=newArrayList<>... Collection<Integer> cs = Arrays.asList(1, 2, 3, 4, 5);
// Collection<Integer> cs = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));

Integer[] moreInt = {6, 7, 8, 9};

// cs.add(10);
// cs.addAll(Arrays.asList(moreInt));

for (Integer i : cs) {
System.out.println(i);
}

Arrays:
^^^^^
public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);
}
_____

为什么不能修改集合大小!!而在代码中自己new出来一个不管有没有泛型都是可以加上去的,这是为什么呢?
^^^^
最佳答案:
Arrays.asList(moreInt)
由于asList 返回的 List是底层基于数组,所以不能改变,对返回的List操作也会对应到原数组中!
Integer[] ints = new Integer[]{1, 2, 3, 4, 5};
List<Integer> intList = Arrays.asList(ints);
intList.set(0, 6);
for (Integer i : ints) {
System.out.print(i + ", ");
}
System.out.println("\n" + intList);
展开
 我来答
月之子4
2016-05-29 · TA获得超过396个赞
知道小有建树答主
回答量:289
采纳率:0%
帮助的人:240万
展开全部
集合类并没有提供修改大小的方法,它的大小随着元素个数的增加而增大,随着元素个数的减少而变小。以前是没有泛型这种东西的,集合中加入任何内容都会转变成Object类型,取出来的时候又要强制转换成所需要的类型,相当的麻烦,而且向下转型的时候容易出错。泛型的出现大大提高了编程的效率,而且检查错误更加容易,jdk5.0之后如果不加泛型会警告,但是不会出错,因为泛型只是编译的概念,并不是语的法强制要求
追问
表达有误,我的意思是这样子的,集合add一次不就是改变了大小吗!
匿名用户
2016-05-29
展开全部
Arrays.asList return是abstract, 是List, 不是ArrayList, 第二种把它变成了ArrayList
追问
向上转型
List
---|ArrayList
-------------|......

——————————————————————————
终于看到答案了在书上,如果有人答道擦边的到答案我就给他了!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式