2012-02-15 60 views
4

尽管在大多数在线的“教程”中,Java中的地图不会从“集合”接口继承,但地图在与套件,列表和队列相同的类别中解释。地图是否属于收集框架?

地图是否属于集合框架?

回答

3

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

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

此外,该教程列出了核心种质接口,它们都遵循范式上述:

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

收藏 - 根的集合层次结构。一个集合表示一组被称为其元素的对象。 Collection接口是所有集合实现的最不常见的分母,用于在需要最大化普遍性时传递集合并对其进行操作。某些类型的集合允许重复元素,而另一些则不允许。有些是有序的,有些是无序的。 Java平台不提供此接口的任何直接实现,但提供了更多特定子接口的实现,例如Set和List。另请参阅“收集界面”部分。

Set - 一个不能包含重复元素的集合。该界面模拟数学集抽象,并用于表示集合,例如包含扑克牌的牌,构成学生时间表的课程或机器上运行的进程。另请参阅设置接口部分。

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

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

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

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

所以地图是集合虽然它并没有真正实现Collection接口。

+0

非常感谢您的回答 – Neifen 2012-02-15 11:39:41

+0

没问题。很高兴我能够提供帮助。 – 2012-02-15 15:03:27

2

Map接口不是Collection接口的扩展。相反,接口启动它自己的接口层次结构来维护键值关联。

1

退房的official tutorial,尤其是Lesson: Interfaces

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

collections hierarchy

,并进一步:

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

  • Collection [...]

  • Set [...]

  • List [...]

  • Queue [...]

  • Map [...]

+0

非常感谢您的回答 – Neifen 2012-02-15 11:39:51

1

从概念上说地图绝对是集合,自从Smalltalk。 Java的类型层次结构是并不意味着管理概念关系而是一种务实的关系,特别是说哪些方法必须实施。

对于类地图集合,它们与非地图类型非常不同。例如,对于必须放置(键,值)和获取(键)(或类似的,如果您正在使用asscociation-objects)的地图,而非类地图必须具有iterator()和add() 。

0

原因是集合与值集合一起使用,其中键值以键值对的形式工作。