「译」Java集合框架系列教程二:集合接口

原文:http://docs.oracle.com/javase/tutorial/collections/interfaces/index.html

译文:Java集合框架系列教程二:集合接口

核心集合接口封装了不同类型的集合,如下图所示。这些接口使得我们可以操作集合而不必关心它们的具体实现细节。核心集合接口是Java集合框架的基础。正如我们可以从下图看到的,核心集合接口形成了层次结构:

Set是一种特殊的集合,而一个SortedSet是一种特殊的Set,以此类推。注意上图的层次结构中包含两棵独立的树 — Map不是一个真正意义上的集合。

注意所有的核心集合接口都是泛型化的(generic)。例如下面是Collection接口的声明:

public interface Collection<E>...

<E>语法告诉我们这个接口是泛型化的。当我们声明一个集合实例时,我们可以也必需指定集合中对象的类型。指定类型使得编译器能在编译时验证集合中的元素的类型都是正确的,从而减少运行时错误。如果想获取更多的关于泛型的信息,敬请参考Java Generic Turtorial 。

当你学会使用这些接口后,你就了解了Java集合框架中的大部分内容。本章讨论关于如何有效使用这些接口的一些建议,包括何时使用何种接口。我们也将学会每个接口的一些习惯用法。

为了保证核心集合接口的数量可控,Java平台没有为每一种集合类型的变种都提供单独的接口(这些变种包括不可变、固定大小以及只可追加)。相反,每个集合接口上的操作都是可定制的(可选的),某个集合接口的实现可能不会支持所有集合操作。如果调用集合不支持的一个操作,将抛出UnsupportedOperationException。集合接口的实现必需用文档记录它所支持的集合操作。

下面的列表描述了Java集合框架的几个核心接口:

  • Collection:集合层次结构树的根接口。一个Collection表示一组元素对象。Collection接口是所有集合对象都必须实现的接口。一些Collection接口的实现允许重复元素,而另外一些则不允许。Java平台没有提供任何对这个接口的直接实现,但是提供了一些更加专用的子接口,比如Set接口和List接口。更多请参考The Collection Interface中文翻译
  • Set:一个不能包含重复元素的集合。这个接口对应数学上的Set,被用来表示数学意义上的集合,比如一手牌、一个学生选的课或者机器上运行的进程。更多请参考The Set Interface中文翻译
  • List:一个有序集合(有时候又叫做序列)。List可以包含重复元素。使用List可以精确控制每个元素在List中的位置,可以指定index插入元素或者访问元素。如果你已经使用过Vector,那么你已经熟悉了List的一般功能了。更多请参考The List Interface
  • Queue:队列。除了基本的集合操作外,一个Queue提供了额外的插入、删除和审查元素操作。Queue一般(但非必须)将元素组织成FIFO(先进先出)形式。有一个例外是优先队列,它按照用户提供的Comparator或者自然序排列元素。不管怎么排序,队列的头始终是第一个被移除的,当调用remove或者poll方法后。在一个先进先出队列中,新插入的元素总是放到队列末尾。其他种类的队列可能会使用不同的放置规则。所有队列实现都必需指定它的排序属性。更多请参考The Queue Interface
  • Map: 将键(keys)映射到值(values)的对象。一个Map不能包含重复的键;每个键最多只能映射到一个值。如果你使用过Hashtable,那么你已经熟悉了Map的基本使用。更多请参考The Map Interface

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

  • SortedSet:元素按照升序排列的Set。SortedSet提供了几个额外的操作来利用排序特性。SortedSet常被用来出力自然排序集合,例如单词列表和会员名册。更多请参考The SortedSet Interface
  • SortedMap:键按照升序排列的Map。SoretedMap常被用作自然排序的key/value对,例如字典和电话簿。更多请参考The SoretedMap Interface

想了解排序接口如何排序元素,请参考The Object Ordering

weixin073智慧旅游平台开发微信小程序+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值