Java ArrayList:它的抽象数据类型是什么?
Java ArrayList: What is Its Abstract Data Type?
Java的“ArrayList
”对我来说似乎是矛盾的。数组(静态或动态)肯定与 C++ 或计算机科学等语言中的列表完全不同。继承自 Java 的 List
,但似乎完全不像是相当愚蠢的。
问题:
ArrayList
的抽象数据类型是什么?是向量(动态数组),还是链表?
- 为什么选择
ArrayList
这个名字?为什么选择名称 List
用于使用索引访问元素并且有时是随机访问的东西(参见 here)?
NB: 我来自 c++ 背景,其中 list
是一个链表,vector
是一个向量(自调整动态数组) .这个术语在其他语言中有什么不同吗?
- 用你的术语来说,它是用动态数组实现的。 (它实际上是一个静态数组,当列表需要调整大小时会被替换。)
- 它是基于数组的
List
接口的实现。因此,它是一个 Array
List
.
- 是的,术语不同。这不是术语“矢量”的一般用法。 “列表”只是简单的英语中的列表:某种类型的多个元素。
Java的“ArrayList
”对我来说似乎是矛盾的。数组(静态或动态)肯定与 C++ 或计算机科学等语言中的列表完全不同。继承自 Java 的 List
,但似乎完全不像是相当愚蠢的。
问题:
ArrayList
的抽象数据类型是什么?是向量(动态数组),还是链表?- 为什么选择
ArrayList
这个名字?为什么选择名称List
用于使用索引访问元素并且有时是随机访问的东西(参见 here)?
NB: 我来自 c++ 背景,其中 list
是一个链表,vector
是一个向量(自调整动态数组) .这个术语在其他语言中有什么不同吗?
- 用你的术语来说,它是用动态数组实现的。 (它实际上是一个静态数组,当列表需要调整大小时会被替换。)
- 它是基于数组的
List
接口的实现。因此,它是一个Array
List
. - 是的,术语不同。这不是术语“矢量”的一般用法。 “列表”只是简单的英语中的列表:某种类型的多个元素。