[数据结构] - ArrayList探究

一 概述

ArrayList可以理解为动态数组,与java的数组相比,它的容量能动态曾长,ArrayList是List接口的可变数组的实现,允许包括null值在内的所有元素。除了实现List接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小(此类大致上等同于Vector类,除了此类是不同步的)

每个ArrayList实例都有一个容量,该容量是指用来存储列表元素的数组的大小。随着向ArrayList中不断添加元素,其容量也自动增长。自动增长会带来数据向新数组的重新拷贝。因此,如果可预知数据量的多少,可在构造ArrayList时制定其容量。在添加大量元素之前,应用程序也可以使用ensureCapacity操作来增加ArrayList实例的容量,这可以减少递增式再分配的数量。

注意,此实现不是同步的,如果多个线程同时访问一个ArrayList实例,而其中至少一个线程从结构上修改了列表,那么它必须保持外部同步。注意,结构上的修改是指任何添加或删除一个或多个元素的操作,或者显式调整底层数组的大小。仅仅设置元素的值不是结构上的修改。

二 实现

ArrayList的默认容量时10,每次扩充1.5倍

未完待续。。

猜你喜欢

转载自www.cnblogs.com/balfish/p/8862752.html