【发布时间】:2019-01-03 22:39:28
【问题描述】:
我想知道是否:
List<String> s = new ArrayList<String>()
是一个使用列表方法的列表,但它是用 ArrayList 构建的?
它的行为是什么?
我无法完全理解我是用这段代码创建队列还是链接列表,
Queue q = new LinkedList();
【问题讨论】:
我想知道是否:
List<String> s = new ArrayList<String>()
是一个使用列表方法的列表,但它是用 ArrayList 构建的?
它的行为是什么?
我无法完全理解我是用这段代码创建队列还是链接列表,
Queue q = new LinkedList();
【问题讨论】:
ArrayList 实现了 List 接口。类似地,LinkedList 实现了 Queue 接口。这意味着:
因为这两个类都实现了这些承诺(它们实现了接口),Java 可以将 ArrayList 视为 List。同样,它可以将 LinkedList 视为队列。
您为什么要这样做?您可能希望能够将任何 List 传递到您的代码中——您并不关心它是如何实现的。因此,您可能有一个 HugeSparseList,它也实现了完全不同地存储底层对象的 List。这对您的代码无关紧要 - 只要 API 相同,您的代码仍然可以工作。
【讨论】:
List 是表示元素序列的基类。 Array List 是一种特殊的实现,它使用内部数组并在需要时动态分配空间。 链表是使用从一个节点指向下一个节点的指针存储的一系列元素。
这两种数据结构在计算复杂度、内存需求和速度方面是不同的。 您可以找到更多信息here。
【讨论】: