【问题标题】:Why there is no interface for stack collection types in the Java standard library?为什么Java标准库中没有堆栈集合类型的接口?
【发布时间】:2013-02-07 17:57:36
【问题描述】:

队列通常以 FIFO(先进先出)的方式对元素进行排序,而堆栈则以 LIFO(后进先出)的方式。

在 Java 标准库中有一个名为 Queue 的特定接口对队列和一组实现它的类进行建模。

虽然有一些类实现了堆栈,例如 Stack(扩展 Vector)、ArrayDeque(如 JavaDoc 中所述,“当用作堆栈") 和 LinkedList(及其 pushpop 方法),堆栈集合类型没有特定的接口。

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

【问题讨论】:

    标签: java data-structures collections interface


    【解决方案1】:

    java.util.Deque接口API

    双队列也可以用作 LIFO(后进先出)堆栈。应优先使用此接口,而不是旧的 Stack 类。当双端队列用作堆栈时,从双端队列的开头推送和弹出元素。

    Deque 有 push、pop 和 peek 方法

    【讨论】:

    • 我更关心预防方面而不是允许方面。 Queue 接口允许防止使用非 FIFO 模式的数据结构;除了 LIFO 模式之外,没有任何接口可以防止使用数据结构。
    【解决方案2】:

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

    您可以为多个角色设想多个接口,但您不能每次都设计一个接口,否则您的代码会变得非常冗长。

    因此必须做出选择。显然,设计一个 LIFO 接口并让 LIFO 类声明它并不是那么重要。

    【讨论】:

      猜你喜欢
      • 2020-10-26
      • 1970-01-01
      • 2021-05-28
      • 2011-06-03
      • 1970-01-01
      • 1970-01-01
      • 2014-06-28
      • 2014-09-30
      • 1970-01-01
      相关资源
      最近更新 更多