抽象数据类型的实现

Implementation of Abstract Data Types

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

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

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

我的问题是,我们也可以 Stack ex = new Stack<>();没有实施任何东西。在这种情况下,我们使用哪个实现?那么实施它的意义何在?我们可以选择我们要使用的实现而不自己实现吗?我迷路了。

再比如,直接用LinkedList为什么还要创建节点来实现ADT?它是仅用于学习目的还是它们有什么不同?

感谢您的帮助!

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


编辑

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