2013-02-07 105 views
1

队列通常以FIFO(先进先出)方式排列元素,而以LIFO(后进先出)方式堆栈。为什么Java标准库中没有堆栈集合类型的接口?

在Java标准库中有一个叫做Queue的特定接口,它建模一个队列和一堆实现它的类。

虽然有实施的叠层,类似Stack(其延伸Vector),类ArrayDequeLinkedList(与(其中,因为在JavaDoc陈述,“作为堆一起使用时是很可能比Stack更快”)其pushpop方法),堆栈收集类型没有特定的接口。

为什么在Java标准库中没有用于堆栈集合类型的接口?

回答

1

java中的接口设计意味着每个实现接口的类声明它。

您可以构想许多角色的许多接口,但不能每次都设计一个接口,或者您的代码开始变得非常冗长。

所以必须做出选择。设计一个LIFO界面并让LIFO类声明它并不显然被认为是非常重要的。

5

参见java.util.Deque接口API

双端也可以被用来作为LIFO(后进先出)堆叠。这个接口应优先于传统的Stack类使用。当一个deque用作堆栈时,元素会从deque的开始处被推入并弹出。

德克有推,弹出和偷看方法

+1

我更关心预防方面比允许一个。队列接口允许防止使用FIFO模式以外的数据结构;除了LIFO模式以外,没有用于防止使用数据结构的接口。 –

相关问题