Java™教程:集合(二)接口

flymist 2018-01-18

Java™教程:集合(二)接口

集合接口封装不同类型的集合

Set是一种特殊的Collection,SortedSet是特殊的Set.

Map不是真正的Collection

Java™教程:集合(二)接口

该<E>语法告诉你的是,接口是通用的。当你声明一个Collection实例时,你可以并且应该指定集合中包含的对象的类型。指定类型允许编译器(在编译时)验证放入集合中的对象的类型是否正确,从而减少运行时的错误。有关泛型类型的信息。

当你了解如何使用这些接口时,你将会了解到大部分关于Java Collections Framework的知识。本章讨论有效使用接口的一般准则,包括何时使用哪个接口。您还将学习每个界面的编程习惯用法,以帮助您充分利用它。

为了保持核心集合接口的数量可管理,Java平台不为每个集合类型的每个变体提供单独的接口。(这样的变体可能包括不可变,固定大小和仅附加)。相反,每个接口中的修改操作被指定为可选的 - 给定的实现可以选择不支持所有操作。如果调用不受支持的操作,则集合抛出一个UnsupportedOperationException。实现负责记录它们支持哪些可选的操作。所有Java平台的通用实现都支持所有的可选操作。

以下列表介绍了核心收集接口:

  • Collection - 收集层次结构的根。一个集合表示一组被称为其元素的对象。该Collection接口是所有集合实现,用来传递周围集合和最大时,通用需要操纵它们的最小公分母。某些类型的集合允许重复元素,而其他类型则不允许。有些是有序的,有些是无序的。Java平台不提供这个接口的任何直接实现,但是提供更具体的子接口的实现,比如Set和List。

  • Set - 不能包含重复元素的集合。这个接口模拟数学集抽象,并且用来表示集合,例如包括扑克牌的牌,组成学生时间表的课程或者在机器上运行的过程。

  • List- 有序集合(有时称为序列)。Lists可以包含重复的元素。List一般用户通过精确控制每个元素插入到列表中的哪个位置,并且可以通过它们的整数索引(位置)来访问元素。如果你已经使用过Vector,你就熟悉一般的味道List。

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

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

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

  • Deques可以同时用作FIFO(先进先出)和LIFO(后进先出)。在deque中,所有新元素都可以在两端插入,检索和删除。

  • Map - 将键映射到值的对象。A Map不能包含重复的键; 每个键可以映射到最多一个值。如果你已经使用过Hashtable,你已经熟悉了基础知识Map。

最后两个核心集合接口仅仅是Set和的排序版本Map:

  • SortedSet- Set按升序维护其元素。提供了几个额外的操作来利用排序。排序集合用于自然排序的集合,如单词列表和成员卷。

  • SortedMap- Map按升序键维护其映射。这是Map模拟的SortedSet。排序地图用于键/值对的自然排序集合,例如字典和电话簿。

相关推荐