ArrayList:
arraylist的构造方法在不输入初始值时,会默认创建一个数量为10的空数组
如果构造方法输入了一个collection类,则会将其转换为数组,再进行赋值
MAX_ARRAY_SIZE为数组的最大个数。因为一些虚拟机在数组中保留一些头字。尝试分配更大的数组可能会导致OutOfMemoryError:请求的数组大小超过VM限制。所以最大的个数设为Integer.MAX_VALUE - 8。但我在实际创建的时候,发现这个值也会超,报错Requested array size exceeds VM limit。当减少一定值的时候,会报错 java.lang.OutOfMemoryError: Java heap space,即内存溢出,这个与设定的堆空间大小有关。
列表的contains方法实际是调用了indexof的方法,indexof的方法就是在遍历数组。对于指定位置的add和remove都会进行一次数组的拷贝
size是该列表真实的元素个数
LinkedList:
peek()与poll()方法可以查看、弹出队列的第一个元素,当为空列表时,不会抛出异常,而是元素展示null;还有peekFirst()、peekLast(),pollFirst()、pollLast()
element()和remove()方法可以查看,弹出队列的第一个元素,当为空列表时,会抛出nosuchelementexception异常。
offerFirst()和offerLast()是增加元素到第一个和最后一个,并不会抛出异常.
linkedlist在构造的时候,如果放入了collection的子类,name会把collection转换为数组,然后用node连接起来