关与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); 展开
// 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); 展开
2个回答
展开全部
集合类并没有提供修改大小的方法,它的大小随着元素个数的增加而增大,随着元素个数的减少而变小。以前是没有泛型这种东西的,集合中加入任何内容都会转变成Object类型,取出来的时候又要强制转换成所需要的类型,相当的麻烦,而且向下转型的时候容易出错。泛型的出现大大提高了编程的效率,而且检查错误更加容易,jdk5.0之后如果不加泛型会警告,但是不会出错,因为泛型只是编译的概念,并不是语的法强制要求
追问
表达有误,我的意思是这样子的,集合add一次不就是改变了大小吗!
2016-05-29
展开全部
Arrays.asList return是abstract, 是List, 不是ArrayList, 第二种把它变成了ArrayList
追问
向上转型
List
---|ArrayList
-------------|......
——————————————————————————
终于看到答案了在书上,如果有人答道擦边的到答案我就给他了!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询