开课吧Java教程什么是类集接口
类集框架定义了几个接口。本节对每一个接口都进行了概述。首先讨论类集接口是因为它们决定了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教程什么是类集接口相关推荐
- java中math.ceil用法_[Java教程]关于Math类的round、floor、ceil三个方法
[Java教程]关于Math类的round.floor.ceil三个方法 0 2014-05-06 16:00:08 一.Math类这三个方法的简介 1.round():取最接近的值. 对于这个方法, ...
- jdbc是java语言编写的类和接口_JDBC——Java语言连接数据库的标准
JDBC概述 API JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Jav ...
- IEnumeratorTItem和IEnumerator Java 抽象类和普通类、接口的区别——看完你就顿悟了...
IEnumerable 其原型至少可以说有15年历史,或者更长,它是通过 IEnumerator 来定义的,而后者中使用装箱的 object 方式来定义,也就是弱类型的.弱类型不但会有性能问题,最主要 ...
- JAVA(四)类集/枚举
成鹏致远 | lcw.cnblog.com |2014-02-04 JAVA类集 1.认识类集 类集的作用 类集实际上就是一个动态的对象数组,与一般的对象数组不同,类集中的对象内容可以任意扩充 类集的 ...
- Java常用类集接口以及实现方式总结
最近学习map-reduce原理以及map-reduce编程,于是顺带着学习下Java编程,对于Java常用的数据结构和类集,我总结到mind图中,便于理清相互之间的关系 package leiji; ...
- java 泛型示例_Java泛型示例教程–泛型方法,类,接口
java 泛型示例 Java Genrics is one of the most important features introduced in Java 5. Java Genrics是Java ...
- 开课吧Java教程之什么是Arrays
Java 2在java.util中新增加了一个叫做Arrays的类.这个类提供了各种在进行数组运算时很有用的方法.尽管这些方法在技术上不属于类集框架,但它们提供了跨越类集和数组的桥梁.在这一节中,分析 ...
- List类集接口-ArrayList
Collection接口下的List子接口允许有重复,那么在实际的开发之中,90%都使用的List接口. List接口对Collection接口做了大量的扩充,主要扩充了如下方法: public E ...
- java封装对象实体类_Java 接口自动化系列--实体类之entity封装
实体包entity下面有4个类,主要存放java对象,每个类必须有私有属性,空参构造,get set方法 具体excel中数据信息见---工具类excel文章 1.API类 解析excel中接口信息的 ...
最新文章
- Django内置分页扩展
- SAP CRM 物料request download - 两个队列的分析
- webmvcconfigurer配置跨域_为什么加了 Spring Security 会导致 Spring Boot 跨域失效呢?...
- 手机长曝光怎么设置_摄影教程丨手机如何拍摄长曝光照片,流光快门,星空银河搞起来!...
- git 原理详解及实用指南_如何编写良好的提交消息:实用的Git指南
- Cannot add foreign key constraint 错误
- 【报告分享】2021年30+精致女性人群需求洞察:“她”经济时代科技引领精致生活.pdf(附下载链接)...
- Mybatis 项目开发实际常用SQL笔记总结
- html在线播放mp4文件,使用HTML5视频在Firefox中播放MP4文件
- 微信公众号开发笔记(二):微信分享接口实现和问题
- jquery获取父级元素、子级元素、兄弟元素的方法
- 庄懂的TA笔记(六)<FakeEnvReflect 生锈,锈迹效果>
- 计算机通信与网络(一)
- Ubuntu18.04下 安装SMPlyer视频播放器 设置倍速播放
- [电脑问题]新固态硬盘安装系统以及分区,reboot and select proper boot device的问题处理
- 基于Python语言量化金融分析师AQF实训项目
- Distiller:量化算法
- linux内核系统调用创建和删除文件
- mcafee 8.5杀毒软件下载
- 手机防盗版本修改步骤