ArrayList
是动态数组的接口吗?还是说它们是同一事物?
类似于 ArrayList
对应动态数组,HashMap
对应 Map
?
除非是 ArrayList
,否则我没有看到任何类似“动态数组”的 Java API?
ArrayList
是动态数组的接口吗?还是说它们是同一事物?
类似于 ArrayList
对应动态数组,HashMap
对应 Map
?
除非是 ArrayList
,否则我没有看到任何类似“动态数组”的 Java API?
ArrayList
是一种使用数组进行存储的集合,而不是链表、双向链表或类似的结构。这意味着它能够提供所有使用数组的好处,同时Java会为您处理动态调整数组大小的机制。
我记得初始数组是以默认最大大小(可以由用户指定)创建的。如果集合用完了空间,那么就会创建一个更大的数组,并将原始数组的内容复制到新数组中。增加大小的量是为了防止此操作发生太频繁,因为该操作相当昂贵。
Java还提供了类似的Vector
集合,但也是线程安全的,请参见:ArrayList和Vector之间有什么区别?。
ArrayList
是 List
接口的可调整大小的数组实现。
如果您需要动态数组,那么这可能是您要找的内容。
List
是动态数组的接口。它被命名为 ArrayList
是因为它内部使用了一个数组而已。ArrayList
是一个动态数组,但是 Map
(或者说 HashMap
)没有“原始”的对应物。ArrayList
是其可调整大小的包装器。它还提供简单的一致性检查——即在迭代期间不要从外部修改数组。