代码之家  ›  专栏  ›  技术社区  ›  Red Eyez

Java中的所有ADT都需要迭代器吗?

  •  1
  • Red Eyez  · 技术社区  · 6 年前

    我在读robertsedgewick写的《算法》一书,我看到了关于ADTs的第1.3章,我有几个问题。

    这是否意味着每次实现ADT时都必须实现迭代器?

    我和一个朋友谈过,他说“一个ADT的实例在迭代时可以被修改(即添加/删除/修改元素)”,这是不是错了,因为包中的元素不能被删除?

    1 回复  |  直到 6 年前
        1
  •  4
  •   Henry    6 年前

    抽象数据类型不过是一组操作以及这些操作的契约。通常,ADT有几种可能的实现,它们可能在合同中未指定的区域显示不同的非功能特性(例如操作的运行时)或不同的行为。如果迭代是一种操作,这取决于具体ADT的性质。它不需要。

    在Java中,您只能定义操作的签名(例如在接口中)。合同必须以非正式的方式给出,例如在Javadoc中。