Java集合类是一种特别有用的工具类,可以用于存储数量不等的多个对象,并可以实现常用的数据结构,如:栈、

队列等。除此之外,Java集合类还可用于保存具有映射关系的关联数组。Java集合大致可分为Set、List和Map三种

状态,其中Set代表无序、不可重复的集合;List代表有序、重复的集合;而Map代表具有映射关系的集合。

Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又

包含了一些子接口或实现类。

如下图所示是Collection接口、子接口及其实现类的继承树:

关于Collection接口的定义:

Collection 层次结构 中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许

有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。JDK 不提供此接口的任何直接

实现:它提供更具体的子接口(如 SetList)实现。此接口通常用来传递 collection,并在需要最大普遍性的地方

操作这些 collection。

包 (bag)多集合 (multiset)(可能包含重复元素的无序 collection)应该直接实现此接口。

所有通用的 Collection 实现类(通常通过它的一个子接口间接实现 Collection)应该提供两个“标准”构造方法:一个

是 void(无参数)构造方法,用于创建空 collection;另一个是带有 Collection 类型单参数的构造方法,用于创建一

个具有与其参数相同元素新的 collection。实际上,后者允许用户复制任何 collection,以生成所需实现类型的一个等

效 collection。尽管无法强制执行此约定(因为接口不能包含构造方法),但是 Java 平台库中所有通用的Collection

实现都遵从它。

此接口中包含的“破坏性”方法,是指可修改其所操作的 collection 的那些方法,如果此 collection 不支持该操作,则

指定这些方法抛出 UnsupportedOperationException。如果是这样,那么在调用对该 collection 无效时,这些方法可

能,但并不一定抛出 UnsupportedOperationException。例如,如果要添加的 collection 为空且不可修改,则对该

collection 调用 addAll(Collection) 方法时,可能但并不一定抛出异常。

一些 collection 实现对它们可能包含的元素有所限制。例如,某些实现禁止 null 元素,而某些实现则对元素的类型有

限制。试图添加不合格的元素将抛出一个未经检查的异常,通常是 NullPointerExceptionClassCastException。试

图查询是否存在不合格的元素可能抛出一个异常,或者只是简单地返回 false;某些实现将表现出前一种行为,而某

些实现则表现后一种。较为常见的是,试图对某个不合格的元素执行操作且该操作的完成不会导致将不合格的元素

插入 collection 中,将可能抛出一个异常,也可能操作成功,这取决于实现本身。这样的异常在此接口的规范中标记

为“可选”。

由每个 collection 来确定其自身的同步策略。在没有实现的强烈保证的情况下,调用由另一进程正在更改的

collection 的方法可能会出现不确定行为;这包括直接调用,将 collection 传递给可能执行调用的方法,以及使用现

有迭代器检查 collection。

Collections Framework 接口中的很多方法是根据 equals 方法定义的。例如,contains(Object o) 方法的规范声

明:“当且仅当此 collection 包含至少一个满足 (o==null ? e==null :o.equals(e)) 的元素e 时,返回 true。” 应将此

规范理解为它暗指调用具有非空参数 oCollection.contains 方法会导致为任意的e 元素调用 o.equals(e) 方法。可

随意对各种实现执行优化,只要避免调用 equals 即可,例如,通过首先比较两个元素的哈希码。(Object.hashCode()

规范保证哈希码不相等的两个对象不会相等)。较为常见的是,各种 Collections Framework 接口的实现可随意利用

底层 Object 方法的指定行为,而不管实现程序认为它是否合适。

以下是Collection接口中定义的方法:

1、

int size();

返回此 collection 中的元素数。如果此 collection 包含的元素大于 Integer.MAX_VALUE,则返回 Integer.MAX_VALUE

2、

boolean isEmpty();

如果此 collection 不包含元素,则返回 true

3、

boolean contains(Object o);

如果此 collection 包含指定的元素,则返回 true。更确切地讲,当且仅当此 collection 至少包含一个满足

(o==null ? e==null : o.equals(e)) 的元素 e 时,返回 true。 如果此 collection 包含指定的元素,则返回true

4、

Iterator<E> iterator();

返回在此 collection 的元素上进行迭代的迭代器。关于元素返回的顺序没有任何保证(除非此 collection 是某个能提

供保证顺序的类实例)。返回在此 collection 的元素上进行迭代的 Iterator。

5、

Object[] toArray();

返回包含此 collection 中所有元素的数组。如果 collection 对其迭代器返回的元素顺序做出了某些保证,那么此方法

必须以相同的顺序返回这些元素。

返回的数组将是“安全的”,因为此 collection 并不维护对返回数组的任何引用。(换句话说,即使 collection 受到数

组的支持,此方法也必须分配一个新的数组)。因此,调用者可以随意修改返回的数组。

此方法充当了基于数组的 API 与基于 collection 的 API 之间的桥梁。返回包含此 collection 中所有元素的数组

转载请注明出处:http://blog.csdn.net/hai_qing_xu_kong/article/details/43956047   情绪控_

Java学习笔记22相关推荐

  1. Java学习笔记22:并发(2)

    Java学习笔记22:并发(2) 图源:PHP中文网 终止任务 终止线程有一种非常简单的方式:设置一个多线程共享的标记位,子线程用轮询的方式检查这个标记位,如果该标记位显示取消状态,就让子线程退出执行 ...

  2. Java学习笔记(22)Developing Efficient Algorithms

  3. java学习笔记16--I/O流和文件

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note16.html,转载请注明源地址. IO(Input  Output)流 IO流用来处理 ...

  4. java学习笔记十三

    11. 凡是继承了FilterOutputStream或FilterInputStream的类都是过滤流,也就是说他们不能直接跟目标(键盘,文件,网络等,节点流可以)数据打交道,只能包装 Intput ...

  5. 【Java学习笔记之二十六】深入理解Java匿名内部类

    在[Java学习笔记之二十五]初步认知Java内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以就衍生出这篇博客.在这篇博客中你可以了解到匿名内部类的使用.匿名内部类要注意 ...

  6. 2021-05-31以及2021-06-01(从136开始) JAVA学习笔记

    JAVA学习笔记 1学习易错点: 2 具体内容 112 构造方法 113 构造方法的注意事项 114 标准类的制作!!! 115 api string 118 string构造方法![在这里插入图片描 ...

  7. Java学习笔记之基础篇

    Java学习笔记之基础篇 目录 Java如何体现平台的无关性? 面向对象(OO)的理解 面向对象和面向过程编程的区别 面向对象三大特征 静态绑定和动态绑定(后期绑定) 延伸:类之间的关系 组合(聚合) ...

  8. 尚学堂Java学习笔记

    尚学堂Java学习笔记 ============================ J2SDK&JRE J2SDK:JAVA2 SOFTWARE DEVELOPMENT KIT JRE:JAVA ...

  9. 郑志远的java学习笔记

    郑志远的java学习笔记 郑志远    CCB 1         Java起源 略 2         Java语言概述 1.面向对象编程的3个原则:封装(encapsulation).继承(inh ...

最新文章

  1. 数字图像处理——形态学图像处理及图像分割
  2. 20145204 张亚军《信息安全系统设计基础》第10周学习总结
  3. c语言 搜索题油田问题,HDU1241 经典油田问题(BFS)
  4. POJ 1007 DNA Sorting
  5. 日志框架NLog之将日志发送到邮件
  6. junit白盒测试 案例_JUnit通过失败测试案例
  7. 计算机组成原理袁春风百度云,计算机组成原理 袁春风chap3homework.pdf
  8. 从数据库里读值往TEXT文本里写
  9. python二维表转一维表_二维表格转换成一维表格
  10. echo “1“ > /proc/sys/net/ipv4/ip_forward(数据包转发)
  11. 360企业版使用感受
  12. select选择框在谷歌火狐和IE样式的不同
  13. 成都“小甜甜”:她给了男人希望,男人却被嘲笑X丝
  14. Chrome 谷歌浏览器将整个网页保存为图片
  15. 免费申请树葬、草坪葬、花坛葬!东胜区殡仪馆发布2019年清明节祭奠服务安排!...
  16. 【CSDN2012年度博客之星】喜欢本博客的读者,投票赠送《visual C++2010开发权威指南》电子稿--感谢支持 ~(截至到2012年12月30日)
  17. 智能推荐系统开发中的十大要素
  18. 此时流泪,彼时花开。。。。
  19. String类型转json格式
  20. 英语说话方式的一点儿心得

热门文章

  1. java多线程-阻塞队列BlockingQueue
  2. Redis持久化存储详解(一)
  3. ThinkPHP5.0中Redis的使用和封装
  4. BurpSuite实例教程讲解
  5. win7安装mysql-5.7.18
  6. c++.net 托管类封装非托管类
  7. ApacheBench-web性能测试
  8. 百度ueditor 拖文件或world 里面复制粘贴图片到编辑中 上传到第三方问题
  9. iOS视图控制对象生命周期-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear、view...
  10. Oracle 用数据泵导入导出数据