我想知道是否:
List<String> s = new ArrayList<String>()
是使用list方法的列表,但它是使用ArrayList构建的吗?
它的行为是什么?
我无法完全理解是使用这段代码创建队列还是LinkedList,
Queue q = new LinkedList();
答案 0 :(得分:1)
ArrayList实现List接口。同样,LinkedList实现Queue接口。那是什么意思:
由于两个类都实现了这些承诺(它们实现了接口),因此Java可以将ArrayList视为List。同样,它可以将LinkedList视为队列。
您为什么要这样做?您可能希望能够将任何List传递到您的代码中-不在乎如何实现它。因此,您可能有一个HugeSparseList,它也实现了List,该List存储底层对象的方式完全不同。这与您的代码无关紧要-只要API相同,您的代码仍然可以使用。
答案 1 :(得分:0)
List是表示元素序列的基类。数组列表是使用内部数组并在需要时动态分配空间的特定实现。 链表是使用从一个节点指向以下节点的指针存储的一系列元素。
这两个数据结构在计算复杂度,内存需求和速度方面有所不同。 您可能会找到更多信息here。