类集框架定义了几个接口。本节对每一个接口都进行了概述。首先讨论类集接口是因为它们决定了collection类的基本特性。不同的是,具体类仅仅是提供了标准接口的不同实现。支持类集的接口总结在如下的表中:

接口 描述
Collection 能使你操作对象组,它位于类集层次结构的顶层
List 扩展Collection去处理序列(对象的列表)
Set 扩展Collection去处理集合,集合必须包含唯一元素
SortedSet 扩展Set去处理排序集合

除了类集接口之外,类集也使用Comparator,Iterator和ListIterator接口。关于这些接口将在本章后面做更深入的描述。

简单地说,Comparator接口定义了两个对象如何比较;Iterator和ListIterator接口枚举类集中的对象。

为了在它们的使用中提供最大的灵活性,类集接口允许对一些方法进行选择。可选择的方法使得使用者可以更改类集的内容。支持这些方法的类集被称为可修改的。

不允许修改其内容的类集被称为不可修改的。如果对一个不可修改的类集使用这些方法,将引发一个UnsupportedOperationException异常。所有内置的类集都是可修改的。

Collection接口是构造类集框架的基础。它声明所有类集都将拥有的核心方法。这些方法被总结在下表中。因为所有类集实现Collection,所以熟悉它的方法对于清楚地理解框架是必要的。其中几种方法可能会引发一个UnsupportedOperationException异常。

正如上面解释的那样,这些发生在当类集不能被修改时。当一个对象与另一个对象不兼容,例如当企图增加一个不兼容的对象到一个类集中时。将产生一个ClassCastException异常。

Collection 定义的方法

方法 描述
boolean add(Object obj) 将obj加入到调用类集中。如果obj被加入到类集中了,则返回true;如果obj已经是类集中的一个成员或类集不能被复制时,则返回false
boolean addAll(Collection c) 将c中的所有元素都加入到调用类集中,如果操作成功(也就是说元素被加入了),则返回true;否则返回false
void clear( ) 从调用类集中删除所有元素
boolean contains(Object obj) 如果obj是调用类集的一个元素,则返回true,否则,返回false
boolean containsAll(Collection c) 如果调用类集包含了c中的所有元素,则返回true;否则,返回false
boolean equals(Object obj) 如果调用类集与obj相等,则返回true;否则返回false
int hashCode( ) 返回调用类集的散列码
boolean isEmpty( ) 如果调用类集是空的,则返回true;否则返回false
Iterator iterator( ) 返回调用类集的迭代程序
Boolean remove(Object obj) 从调用类集中删除obj的一个实例。如果这个元素被删除了,则返回true;否则返回false
Boolean removeAll(Collection c) 从调用类集中删除c的所有元素。如果类集被改变了(也就是说元素被删除了),则返回true;否则返回false
Boolean retainAll(Collection c) 删除调用类集中除了包含在c中的元素之外的全部元素。如果类集被改变了(也就是说元素被删除了),则返回true,否则返回false
int size( ) 返回调用类集中元素的个数
Object[ ] toArray( ) 返回一个数组,该数组包含了所有存储在调用类集中的元素。数组元素是类集元素的拷贝
Object[ ] toArray(Object array[ ]) 返回一个数组,该数组仅仅包含了那些类型与数组元素类型匹配的类集元素。数组元素是类集元素的拷贝。如果array的大小与匹配元素的个数相等,它们被返回到array。如果array的大小比匹配元素的个数小,将分配并返回一个所需大小的新数组,如果array的大小比匹配元素的个数大,在数组中,在类集元素之后的单元被置为null。如果任一类集元素的类型都不是 array 的子类型,则引发一个ArrayStoreException异常

调用add( )方法可以将对象加入类集。注意add( )带一个Object类型的参数。因为Object是所有类的超类,所以任何类型的对象可以被存储在一个类集中。然而原始类型可能不行。

例如,一个类集不能直接存储类型int,char,double等的值。当然如果想存储这些对象,可以通过调用addAll( )方法将一个类集的全部内容增加到另一个类集中。

可以通过调用remove( )方法将一个对象删除。为了删除一组对象,可以调用removeAll( )方法。调用retainAll( )方法可以将除了一组指定的元素之外的所有元素删除。

为了清空类集,可以调用clear( )方法。通过调用contains( )方法,可以确定一个类集是否包含了一个指定的对象。为了确定一个类集是否包含了另一个类集的全部元素,可以调用containsAll( )方法。当一个类集是空的时候,可以通过调用isEmpty( )方法来予以确认。调用size( )方法可以获得类集中当前元素的个数。

toArray( )方法返回一个数组,这个数组包含了存储在调用类集中的元素。这个方法比它初看上去的能力要更重要。经常使用类数组语法来处理类集的内容是有优势的。通过在类集和数组之间提供一条路径,可以充分利用这两者的优点。

调用equals( )方法可以比较两个类集是否相等。“相等”的精确含义可以不同于从类集到类集。

例如,可以执行equals( )方法以便用于比较存储在类集中的元素的值,换句话说,equals( )方法能比较对元素的引用。

一个更加重要的方法是iterator( ),该方法对类集返回一个迭代程序。正如你将看到的那样,当使用一个类集框架时,迭代程序对于成功的编程来说是至关重要的。

开课吧Java教程什么是类集接口相关推荐

  1. java中math.ceil用法_[Java教程]关于Math类的round、floor、ceil三个方法

    [Java教程]关于Math类的round.floor.ceil三个方法 0 2014-05-06 16:00:08 一.Math类这三个方法的简介 1.round():取最接近的值. 对于这个方法, ...

  2. jdbc是java语言编写的类和接口_JDBC——Java语言连接数据库的标准

    JDBC概述 API JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Jav ...

  3. IEnumeratorTItem和IEnumerator Java 抽象类和普通类、接口的区别——看完你就顿悟了...

    IEnumerable 其原型至少可以说有15年历史,或者更长,它是通过 IEnumerator 来定义的,而后者中使用装箱的 object 方式来定义,也就是弱类型的.弱类型不但会有性能问题,最主要 ...

  4. JAVA(四)类集/枚举

    成鹏致远 | lcw.cnblog.com |2014-02-04 JAVA类集 1.认识类集 类集的作用 类集实际上就是一个动态的对象数组,与一般的对象数组不同,类集中的对象内容可以任意扩充 类集的 ...

  5. Java常用类集接口以及实现方式总结

    最近学习map-reduce原理以及map-reduce编程,于是顺带着学习下Java编程,对于Java常用的数据结构和类集,我总结到mind图中,便于理清相互之间的关系 package leiji; ...

  6. java 泛型示例_Java泛型示例教程–泛型方法,类,接口

    java 泛型示例 Java Genrics is one of the most important features introduced in Java 5. Java Genrics是Java ...

  7. 开课吧Java教程之什么是Arrays

    Java 2在java.util中新增加了一个叫做Arrays的类.这个类提供了各种在进行数组运算时很有用的方法.尽管这些方法在技术上不属于类集框架,但它们提供了跨越类集和数组的桥梁.在这一节中,分析 ...

  8. List类集接口-ArrayList

    Collection接口下的List子接口允许有重复,那么在实际的开发之中,90%都使用的List接口. List接口对Collection接口做了大量的扩充,主要扩充了如下方法: public E ...

  9. java封装对象实体类_Java 接口自动化系列--实体类之entity封装

    实体包entity下面有4个类,主要存放java对象,每个类必须有私有属性,空参构造,get set方法 具体excel中数据信息见---工具类excel文章 1.API类 解析excel中接口信息的 ...

最新文章

  1. Django内置分页扩展
  2. SAP CRM 物料request download - 两个队列的分析
  3. webmvcconfigurer配置跨域_为什么加了 Spring Security 会导致 Spring Boot 跨域失效呢?...
  4. 手机长曝光怎么设置_摄影教程丨手机如何拍摄长曝光照片,流光快门,星空银河搞起来!...
  5. git 原理详解及实用指南_如何编写良好的提交消息:实用的Git指南
  6. Cannot add foreign key constraint 错误
  7. 【报告分享】2021年30+精致女性人群需求洞察:“她”经济时代科技引领精致生活.pdf(附下载链接)...
  8. Mybatis 项目开发实际常用SQL笔记总结
  9. html在线播放mp4文件,使用HTML5视频在Firefox中播放MP4文件
  10. 微信公众号开发笔记(二):微信分享接口实现和问题
  11. jquery获取父级元素、子级元素、兄弟元素的方法
  12. 庄懂的TA笔记(六)<FakeEnvReflect 生锈,锈迹效果>
  13. 计算机通信与网络(一)
  14. Ubuntu18.04下 安装SMPlyer视频播放器 设置倍速播放
  15. [电脑问题]新固态硬盘安装系统以及分区,reboot and select proper boot device的问题处理
  16. 基于Python语言量化金融分析师AQF实训项目
  17. Distiller:量化算法
  18. linux内核系统调用创建和删除文件
  19. mcafee 8.5杀毒软件下载
  20. 手机防盗版本修改步骤

热门文章

  1. [转载] [python标准库]math——数学函数
  2. [转载] Java static关键字详解
  3. MATLAB 程序出现错误总结
  4. 面向对象及软件工程——团队作业3
  5. AutoMapper学习笔记
  6. AtCoder Grand Contest 028题解
  7. java基础循环 for 、switch 、while 、do while、
  8. PHP安全之Web攻击
  9. JavaScript对象的常用属性及使用
  10. 20150917-html第二次课