如果您查看 Java 的 LinkedList 方法,它确实提供了对 Queue、Stack、Deque 的操作。
而且我知道您可以使用 LinkedList 实现 Queue、Stack 或 Deque。但是,如果您查看 C# 实现,就会发现 Queue 和 Stack 使用数组。
我的好奇心是,为什么他们为链表提供 push(T e) 方法?
为什么 Queue 和 Stack 不是独立的类,就像 C# 一样。
下面是 push 和 pop 的代码,真是废话。但是为什么?
public void push(Object obj)
{
addFirst(obj);
}
public Object pop()
{
return removeFirst();
}
如果你看HashMap,或者HashSet,它内部使用的是array,对应的还有LinkedHashSet和map来保持排序。
这并不是真的令人困惑,但它确实没有意义。
为什么java有这样的实现?
最佳答案
关注数据结构实现:
链表对于频繁的添加和删除是有效的。 (因为 Queue 和 Stack 通常会这样做,迭代操作很少见)。数组不是,它需要数组复制操作,耗时。
关于Queue 和 Stack 的 Java LinkedList 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7656771/