Arrays.asList(array)和new ArrayList(Arrays.asList(array))之间的区别
两者的区别是什么?
1.List<Integer> list1 = new ArrayList<Integer>(Arrays.asList(ia)); //copy
2.List<Integer> list2 = Arrays.asList(ia);
其中ia
是整数阵列。
我知道在list2
中有些操作是不允许的。为什么会这样?
它是如何存储在内存中的(引用/复制)?
当我洗牌时,list1
不影响原始数组,但list2
会。但是list2
仍然有些令人困惑。
ArrayList
被上传到列表中与创建新的ArrayList
有什么不同?
list1 differs from (1)
ArrayList<Integer> list1 = new ArrayList<Integer>(Arrays.asList(ia));
101
3
1.首先,让我们看看这有什么作用。
2.另一方面,如果你随后创建一个新的数组作为
这是因为由
Arrays.asList()
产生的ArrayList
不是java.util.ArrayList
类型。Arrays.asList()
创建了一个java.util.Arrays$ArrayList
类型的ArrayList
,它并没有扩展java.util.ArrayList
,而只是扩展了java.util.AbstractList
。在这种情况下,
list1
属于ArrayList
类型。在这里,列表被作为 "List "视图返回,意味着它只有附属于该接口的方法。因此,为什么有些方法在
list2
上不被允许。这里,你是在创建一个新的
ArrayList
。你只是在构造函数中给它传递一个值。这不是一个铸造的例子。在铸造中,它可能看起来更像这样。