anArrayList
只是动态数组的接口吗?或者他们是同一个东西?
like:ArrayList
对应动态数组,HashMap
对应Map
?
除了我没有看到任何用于动态数组之类的 Java API ,除非它是ArrayList
?
在那种情况下,它们将是同一件事!
大概他们是同一件事?
anArrayList
只是动态数组的接口吗?或者他们是同一个东西?
like:ArrayList
对应动态数组,HashMap
对应Map
?
除了我没有看到任何用于动态数组之类的 Java API ,除非它是ArrayList
?
在那种情况下,它们将是同一件事!
大概他们是同一件事?
是的。简而言之。
更详细的解释是,anArrayList
是一个使用数组进行存储的集合,而不是链表、双向链表等。这意味着它提供了使用数组的所有好处,而 Java 会为您(动态地)处理调整数组大小的机制。
我似乎记得初始数组是使用默认最大大小创建的(可以由用户指定)。如果集合空间不足,则会创建一个更大的数组,并将原始数组的内容复制到新数组中。设置大小的增量是为了防止这种情况过于频繁地发生,因为该操作的成本相当高。
Java 也提供了Vector
类似的集合,但也是线程安全的,请参阅:ArrayList 和 Vector 的区别是什么?.
ArrayList
是List
接口的可调整大小的数组实现。
因此,如果您需要动态数组,这可能就是您要寻找的东西。
如果“动态数组”是指 C++ 中的数组,那么 Java 中的所有数组都是动态的并存储在堆上。ArrayList
是一个可调整大小的包装器。它还提供简单的一致性检查 - 即在迭代期间您不会从外部修改您的数组。
如果在动态意义上你的意思是一个可以改变大小的数组,那么 aList
是一个动态数组的接口。它之所以命名ArrayList
是因为它在内部使用了一个数组。
您的类比不适合 java 集合框架,因为您可以说 anArrayList
是一个动态数组,但Map
(或HashMap
就此而言)没有“原始”对应物。