```java List arrayList = new ArrayList<>(); ```
注意:这会创建一个初始大小为10的空列表。
List arrayList = new ArrayList(16);
ArrayList的内部实现会创建一个大小为16的数组
elementData
,并在每个位置上赋值为null
。如果执行像arrayList.add(2,"HelloWorld")
这样的操作,则会出现IndexOutOfBoundException
,因为要添加元素的索引(即2)大于arrayList
的size
属性。从JavaDocs中可以清楚地看出,当初始化
arrayList
时,size
属性被初始化为0,并且每次向arrayList
添加新元素时都会增加1。请问有人能解释一下,为什么首先要以这种方式设计
ArrayList
数据结构。尽管在创建arrayList
时,内部数据结构elementData
已经初始化了16个null值,但它仍不允许在索引> size的位置添加值;(在这种情况下假设索引<16)。实现add(index,object)
功能受arrayList
的size
属性控制的想法是什么?
LinkedList
而不是一般的 List 吗? - gaurssize()
,set
方法应该会抛出IndexOutOfBoundsException
异常。 - Petter