Java ArrayList:它的抽象数据类型是什么?

Java ArrayList: What is Its Abstract Data Type?

Java的“ArrayList”对我来说似乎是矛盾的。数组(静态或动态)肯定与 C++ 或计算机科学等语言中的列表完全不同。继承自 Java 的 List,但似乎完全不像是相当愚蠢的。

问题:

  1. ArrayList的抽象数据类型是什么?是向量(动态数组),还是链表?
  2. 为什么选择 ArrayList 这个名字?为什么选择名称 List 用于使用索引访问元素并且有时是随机访问的东西(参见 here)?

NB: 我来自 c++ 背景,其中 list 是一个链表,vector 是一个向量(自调整动态数组) .这个术语在其他语言中有什么不同吗?

  1. 用你的术语来说,它是用动态数组实现的。 (它实际上是一个静态数组,当列表需要调整大小时会被替换。)
  2. 它是基于数组的 List 接口的实现。因此,它是一个 Array List.
  3. 是的,术语不同。这不是术语“矢量”的一般用法。 “列表”只是简单的英语中的列表:某种类型的多个元素。