【问题标题】:Do Maps belong to the Collection Framework?Maps 是否属于 Collection Framework?
【发布时间】:2012-03-06 13:50:17
【问题描述】:

Java 中的地图不继承自接口“集合”,尽管在大多数在线“教程”中,地图与集合、列表和队列在同一类别中进行了解释。

这些地图仍然属于集合框架吗?

【问题讨论】:

    标签: java collections frameworks map


    【解决方案1】:

    集合的最佳描述在Java Collection Tutorial的开头。

    集合(有时称为容器)只是将多个元素组合成一个单元的对象。集合用于存储、检索、操作和通信聚合数据。通常,它们代表形成自然组的数据项,例如扑克牌(卡片集合)、邮件文件夹(字母集合)或电话簿(姓名到电话号码的映射)。

    此外,本教程列出了核心集合接口,它们都遵循上述范例:

    以下列表描述了核心集合接口:

    Collection — 集合层次结构的根。集合表示一组称为元素的对象。 Collection 接口是所有集合实现的最小公分母,用于传递集合并在需要最大通用性时对其进行操作。某些类型的集合允许重复元素,而另一些则不允许。有些是有序的,有些是无序的。 Java 平台不提供此接口的任何直接实现,但提供了更具体的子接口的实现,例如 Set 和 List。另请参阅集合接口部分。

    Set——不能包含重复元素的集合。该接口对数学集合抽象进行建模,并用于表示集合,例如构成扑克手的卡片、构成学生日程安排的课程或在机器上运行的进程。另请参阅设置接口部分。

    List — 有序集合(有时称为序列)。列表可以包含重复的元素。 List 的用户通常可以精确控制每个元素在列表中的插入位置,并且可以通过它们的整数索引(位置)访问元素。如果您使用过 Vector,那么您就会熟悉 List 的一般风格。另请参阅列表界面部分。

    队列 — 用于在处理之前保存多个元素的集合。除了基本的 Collection 操作之外,Queue 还提供了额外的插入、提取和检查操作。

    队列通常(但不一定)以 FIFO(先进先出)方式对元素进行排序。例外情况是优先级队列,它根据提供的比较器或元素的自然顺序对元素进行排序。无论使用何种排序,队列的头部都是将通过调用 remove 或 poll 删除的元素。在 FIFO 队列中,所有新元素都插入到队列的尾部。其他类型的队列可能使用不同的放置规则。每个 Queue 实现都必须指定其排序属性。另请参阅队列接口部分。

    Map — 将键映射到值的对象。 Map 不能包含重复的键;每个键最多可以映射到一个值。如果您使用过 Hashtable,那么您已经熟悉 Map 的基础知识。另请参阅地图界面部分。

    所以 Map 是一个 Collection,尽管它实际上并不需要实现 Collection 接口。

    【讨论】:

    • 非常感谢您的回答
    • 没问题。很高兴我能提供帮助。
    【解决方案2】:

    Map 接口不是 Collection 接口的扩展。相反,接口从它自己的接口层次结构开始,用于维护键值关联。

    【讨论】:

      【解决方案3】:

      查看official tutorial,尤其是Lesson: Interfaces

      [...]核心集合接口是 Java 集合框架的基础。如下图所示,核心集合接口形成层次结构。

      还有:

      以下列表描述了核心集合接口:

      • Collection [...]

      • Set [...]

      • List [...]

      • Queue [...]

      • Map [...]

      【讨论】:

        【解决方案4】:

        从概念上讲,地图绝对是集合,自 Smalltalk 以来一直如此。 Java 的类型层次结构不是为了管理概念关系,而是一种实用关系,特别是说明必须实现哪些方法。

        对于类似地图的集合,这些与非类似地图的集合非常不同。例如,对于地图,您必须有 put(key, value) 和 get(key) (或类似的,如果您正在使用关联对象),而非类似地图的必须有 iterator() 和 add() .

        【讨论】:

          【解决方案5】:

          原因是 Collections 与一组值一起工作,而 Map 以键值对的形式工作。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-12-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-12-14
            • 2021-06-19
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多