抽象数据类型的实现

时间:2021-03-08 20:15:22

标签: java data-structures stack nodes abstract-data-type

我正在学习 Java 和抽象数据类型,但我有点困惑。

基本上,据我所知,抽象数据类型是已定义但未实现的东西。所以我们有抽象数据类型的 API,我们需要实现 API 中指定的那些方法。例如,我们有一个 Stack,我们可以通过使用数组、节点等来实现它…… 例如,要声明这些对象,我们会这样做:

Stack ex = new ArrayStack<>();或 Stack ex = new NodeStack<>();

我的问题是,我们也可以做 Stack ex = new Stack<>();无需执行任何操作。在这种情况下,我们使用的是哪种实现?那么实施它有什么意义呢?我们可以在不自己实现的情况下选择要使用的实现吗?我很失落。

再举个例子,如果可以直接使用LinkedList,为什么还要创建节点来实现ADT?仅用于学习目的还是它们有所不同?

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

您对抽象数据类型的描述是正确的。但是,如果您指的是 java.util.Stack<E>,它不是抽象的,您可以查看文档 here


编辑

LinkedList<E> 也不是抽象的,而是 List<E> 接口的实现。 Node<E> 类仅用于 LinkedList<E> 实现中。除了用于学习目的或在其他地方使用 Node 样式结构外,无需创建自己的版本。

相关问题