java.util.ArrayList是数据结构/集合/或抽象数据类型的实现?

标签 java data-structures

这都是关于术语的。我可以说List是一个抽象数据类型ArrayList是一个数据结构吗?因此,Java Collection Framework 是一组 AST 和相应的 DS(实现)。

最佳答案

接口(interface)(不仅在 Java 中,而且在 C#、Go 等中也如此)是 API 的定义,是一个契约,它指定可以在实现该接口(interface)的实例上调用哪些方法。接口(interface)既不保存任何数据,也不实际实现合约本身。从这个意义上说,我们可以说接口(interface)是一种抽象数据结构List 是一个接口(interface),也就是说,它是一个契约,描述如何操作有序的数据集合。一个接口(interface)可以使用更多的契约方法来扩展另一个接口(interface)。由于 List 接口(interface)描述了有序的数据集合,因此它扩展了 Collection 接口(interface),它只是定义了通用数据集合的契约(例如,不引用特定的排序或插入规则)。同样,我们可以将其描述为一种抽象数据结构

ArrayListList 接口(interface)的可能实现之一。因此,它还实现了 Collection 接口(interface)。因此,它是一个具体数据结构(以及一个集合本身),实现了多个抽象数据结构。然而,Java 中也有一些抽象类,其中有一些未实现的方法。这些也是抽象数据结构,但不是接口(interface)。所以Java中的接口(interface)是一种抽象数据结构,但反之则不然。

此外,可以拥有一个实现接口(interface)(抽象数据结构本身)的抽象数据结构(抽象类)。给你的一个思考练习:弄清楚这是什么意思:)

那么,什么是抽象呢?使用泛型类型参数化的具体类在某种程度上是一种抽象数据结构,因为它抽象了适用于可用于替换泛型类型的不同类的算法。由于 ArrayList 本身就是使用 Java 泛型来定义其操作的数据类型的具体实现之一,因此它本身就是一个抽象数据结构,但其方式与接口(interface)或抽象类。从这个意义上说,抽象数据结构是一个定义不明确的术语。

关于java.util.ArrayList是数据结构/集合/或抽象数据类型的实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41989155/

相关文章:

c++ - 提高访问 map 中的元素和写入文件的性能

java - Android Studio 3.6.3 不生成所有 BE 常量

java - 如何将 json 对象从 Angular 发送到 Rest 服务?

java - Spring MVC,转发

java - 我可以控制 spring Controller 方法参数的实例化方式吗?

python - 是否有允许高效范围查询的 python 数据结构?

algorithm - 对网页的全部内容进行哈希处理是如何工作的?

java - 显示\t\n为节点的原因是什么?

Java 数据结构 : IndexedSet or HashList

c++ - 优先队列堆实现