`

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

    博客分类:
  • 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

15
3
分享到:
评论

相关推荐

    Java中的集合框架Markdown全系列笔记

    能学到什么:在学习Java的朋友,可以从本文教程中学习到Java中最常用的集合框架,HashMap,ArrayList,HashSet等,同时又基于代码有一定层次的原理解释,让大家知其然,知其所以然,而又不会有太高的学习门槛。...

    Java 8新特性之旅:使用Stream API处理集合

    在这篇“Java 8新特性教程”系列文章中,我们会深入解释,并通过代码来展示,如何通过流来遍历集合,如何从集合和数组来创建流,以及怎么聚合流的值。  在之前的文章“遍历、过滤、处理集合及使用Lambda表达式增强...

    编程课件+Java系列课程+PPT课件+Java教学

    - 字符串与集合:深入String类和集合框架,如ArrayList、HashMap。 - 异常处理:介绍try-catch和自定义异常。 五、I/O与文件操作 - I/O流:讲解输入输出流的基本概念。 - 文件操作:指导文件的读写和操作。 六、...

    java-tech-stack:Java技术栈,涉及Java技术体系,Java编程练习题,Java面试题,IT宅文章收录,以及业界优秀博文收录

    Java集合框架 并发编程 框架 Spring SpringBoot 数据库 安全 分布式 微服务 Spring Cloud Dubbo 架构设计 场景设计 缓存 网络 网络学习资源 性能调优 性能调优学习资源 Tomcat 面试题 互联网大厂面试题 技术博客:IT...

    25章Java七大热门技术框架源码解析

    Java七大热门技术框架源码解析视频教程分享,2023最新,一共25章! 汇聚了Java Web开发主流热门框架(Spring Framework , Spring Data, Spring Boot, Spring Cloud,Mybatis,Tomcat,RocketMQ): 框架1:...

    08-《集合框架-1》.rar

    java系列第八讲,java框架,包含课件、课程案例、课后作业。

    jdk8安装超详细教程,两种配置环境变量方法

    JVM负责执行字节码,而类库则提供了各种API,如集合框架、IO流、网络通信等功能,为开发者提供了丰富的编程接口。 3. **工具集**:JDK还包括一系列开发者工具,如Java打包工具(jar)、Java文档生成工具(javadoc)...

    Java 语言基础 —— 非常符合中国人习惯的Java基础教程手册

    (5) implements 子句用于说明类中将实现哪些接口,接口是 Java 的一种引用类 型。 (6) 类体包含了变量和方法。在类体中定义的数据、变量和方法称为类的成员, 或称为实例变量和实例方法。 (7) 例如: 下例定义...

    Java经典入门教程pdf完整版

    Java经典入门教程pdf完整版Java私塾跟我学系列JAⅥ篇网址:htp:/www.lavass.Cn电话:010-86835215 3;Java是一种软件运行平台 3.1:什么是软件的运行平台 如同我们需要阳光、空气、水和食物才能正常存活一样,软件最终要...

    java8集合源码分析-mini-spring:手写Spring——从头实现一个小型Spring框架

    集合源码分析 mini-spring 手写Spring系列 手动实现一个Spring框架 内容持续更新,详细教程欢迎关注我的博客 最近学习了一下spring的相关内容,所以也就想要照猫画虎地记录和实现一下spring的框架,通过阅读这些也...

    百度翻译源码java-awesome-react:一个很棒的React框架集合

    一个很棒的React框架集合 真棒React 一系列关于 React 生态系统的精彩内容。 React 用于构建用户界面的 JavaScript 库 React一般资源 React社区 React在线游乐场 React教程 React一般教程 React最佳实践 React造型 ...

    安卓锁机教程java源码-HackingTools-2:为黑客、渗透测试人员和安全研究人员准备的一组很棒的列表

    安卓锁机教程java源码令人敬畏的渗透测试 一组很棒的渗透测试资源 在线资源 渗透测试资源 - 免费的进攻性安全 Metasploit 课程 - 渗透测试执行标准 - 打开 Web 应用程序安全项目 - 面向渗透测试人员/研究人员的免费...

    Arrays工具类常用方法

    C语言自学完备手册(33篇) Android多分辨率适配框架 JavaWeb核心技术系列教程 ...在Java API中提供了操作数组的工具类 java.util.Arrays,例如:排序,查找,复制,数组转集合,数组转字符串等常见操

    java开发区块链只需150行代码

    本文目的是通过java实战开发教程理解区块链是什么。将通过实战入门学习,用Java自学开发一个很基本的区块链,并在此基础上能扩展如web框架应用等。这个基本的java区块链也实现简单的工作量证明系统。本文用一个java...

    springmybatis

    1. 现阶段,你可以直接建立java 工程,但一般都是开发web项目,这个系列教程最后也是web的,所以一开始就建立web工程。 2. 将 mybatis-3.2.0-SNAPSHOT.jar,mysql-connector-java-5.1.22-bin.jar 拷贝到 web工程的...

    Android 初学中阶高阶书籍_集合打包2

    Android开发指南中文版-应用程序框架,Android驱动开发入门及手机案例开发分析教程,Android手机开发应用案例分析之手机 版开心网功能实现,Android硬件驱动开发关键技术和HAL移植要领,Android中文翻译组——Android...

    Android 初学中阶高阶书籍_集合打包3

    Android开发指南中文版-应用程序框架,Android驱动开发入门及手机案例开发分析教程,Android手机开发应用案例分析之手机 版开心网功能实现,Android硬件驱动开发关键技术和HAL移植要领,Android中文翻译组——Android...

    Web安全培训ppt(适合初学者)

    二、Web安全系列之漏洞 1、漏洞产生原因(1天) 漏洞就是软件设计时存在的缺陷,安全漏洞就是软件缺陷具有安全攻击应用方面的价值。软件系统越复杂,存在漏洞的可能性越大。 2、漏洞出现哪些地方?(2天) 前端静态...

    asp.net知识库

    泛型技巧系列:避免基类及接口约束 New Article 不该用Generics实现Abstract Factory的理由 C#2.0-泛型 C#2.0-extern C#2.0-可空类型 C#2.0-分部类 C#2.0-迭代器 C#2.0 的新增功能学习 泛型的序列化问题 .NET 2.0 ...

    26.Spring Boot 服务的注册和发现.rar

    2、Spring Cloud是一系列工具框架的集合体。 3、Spring Cloud提供了一套完整的微服务解决方案。 16套Java架构师,集群,高可用,高可扩展,高性能,高并发,性能优化,设计模式,数据结构,虚拟机,微服务架构,日志...

Global site tag (gtag.js) - Google Analytics