代替Stack的究竟该是什么

众所周知,Java当中Stack的实现非常糟糕(至少截至Java 8为止),因为stack和vector的关系应当是composition的关系,而非inheritance的继承关系。在Oracle的官方文档中,也是推荐使用Deque去替代Stack类.

可问题是,所谓deque,就是double-ended queue,显然,尽管它实现了stack应该有的接口,但破坏了FIFO(先进先出)的原则。也就是说,它引入类一些其他操作。这也引起了一些人的不满。该文章指出,我们应当对deque再次进行一次封装——在逻辑上,这完全说得通,因为我们想要一个is a stack的Stack类。

但是在做题的时候我们可能…