java.util.Collection<E> 源码分析(JDK1.7)

---------------------------------------------------------------------------------

java.util.Collection<E>是一个接口,它的定义如下:

 public interface Collection<E> extends Iterable<E> {
// Query Operations
// Modification Operations
// Bulk Operations
// Comparison and hashing
}

(1)从定义中可以看出Collection接口中定义了:查询方法、修改方法、批量操作方法、哈希和比较方法。

(2)Collection是一个根接口,表示一组对象,这些对象也称为collection的元素。

(3)Collection的实现类中有这样的特征: 有些collection是允许重复元素的;有些collection是不允许重复元素的;有些collection是有序的;有些collection是无序的。

(4)JDK不提供对Collection接口的直接实现,而且提供了两个更为具体的接口去实现(如:java.util.List和java.util.Set)

----------------------------------------------------------------------------------

下面来看看java.util.Collection<E>中具体有哪些方法

从下面的表格中可以看出java.util.Collection<E>接口中一共有15个方法,其中查询操作6个;修改操作2个;批量操作5个;比较和哈希操作2个。

查询操作 int size() 返回此 collection 中的元素数。如果此 collection 包含的元素大于 Integer.MAX_VALUE,则返回 Integer.MAX_VALUE
boolean isEmpty() 如果此 collection 不包含元素,则返回 true,否则返回false
boolean contains(Object o) 如果此 collection 包含指定的元素,则返回 true。更确切地讲,当且仅当此 collection 至少包含一个满足 (o==null ? e==null : o.equals(e)) 的元素 e 时,返回 true
Iterator<E> iterator() 返回在此 collection 的元素上进行迭代的迭代器。关于元素返回的顺序没有任何保证(除非此 collection 是某个能提供保证顺序的类实例)。
Object[] toArray() 返回包含此 collection 中所有元素的数组。如果 collection 对其迭代器返回的元素顺序做出了某些保证,那么此方法必须以相同的顺序返回这些元素。
<T> T[] toArray(T[] a) 返回包含此 collection 中所有元素的数组;返回数组的运行时类型与指定数组的运行时类型相同。如果指定的数组能容纳该 collection,则返回包含此 collection 元素的数组。否则,将分配一个具有指定数组的运行时类型和此 collection 大小的新数组。
修改操作 boolean add(E e) 将元素e添加到此集合中,如果添加成功则返回true,添加失败则返回false
boolean remove(Object o) 从此 collection 中移除指定元素o的单个实例,如果操作成功则返回true,操作失败则返回false
批量操作 boolean containsAll(Collection<?> c ) 如果此 collection 包含指定 collection 中的所有元素,则返回 true
addAll(Collection<? extends E> c) 将指定 collection 中的所有元素都添加到此 collection 中.
boolean removeAll(Collection<?> c) 移除此 collection 中那些也包含在指定 collection 中的所有元素。
boolean retainAll(Collection<?> c) 仅保留此 collection 中那些也包含在指定 collection 的元素。
void  clear() 移除此 collection 中的所有元素。
比较和哈希操作 boolean equals(Object o) 比较此 collection 与指定对象是否相等
int hashCode() 返回此 collection 的哈希码值

----------------------------------------------------------------------------------

java.util.Collection<E>源码如下:(看看下面的源码,定义的很规范,各种操作都有-----> 此时应该想到它的实现类该有多可怜,要实现多少方法呀。~_~)

 package java.util;

 public interface Collection<E> extends Iterable<E> {
// Query Operations int size(); boolean isEmpty(); boolean contains(Object o); Iterator<E> iterator(); Object[] toArray(); <T> T[] toArray(T[] a); // Modification Operations boolean add(E e); boolean remove(Object o); // Bulk Operations boolean containsAll(Collection<?> c); boolean addAll(Collection<? extends E> c); boolean removeAll(Collection<?> c); boolean retainAll(Collection<?> c); void clear(); // Comparison and hashing boolean equals(Object o); int hashCode();
}

----------------------------------------------------------------------------------

----------------------------------------------------------------------------------

源码(03) -- java.util.Collection<E>的更多相关文章

  1. 源码(09) -- java.util.Arrays

    java.util.Arrays 源码分析 ------------------------------------------------------------------------------ ...

  2. 源码(05) -- java.util.AbstractCollection<E>

    java.util.AbstractCollection<E> 源码分析(JDK1.7) ------------------------------------------------- ...

  3. 源码(04) -- java.util.List<E>

    java.util.List<E> 源码分析(JDK1.7) --------------------------------------------------------------- ...

  4. JDK1.8源码(五)——java.util.Vector类

    JDK1.8源码(五)--java.lang. https://www.cnblogs.com/IT-CPC/p/10897559.html

  5. 源码(06) -- java.util.AbstractList<E>

    java.util.AbstractList<E> 源码分析(JDK1.7) ------------------------------------------------------- ...

  6. 源码(07) -- java.util.Iterator<E>

    java.util.Iterator<E> 源码分析(JDK1.7) ----------------------------------------------------------- ...

  7. JDK1.8源码(五)——java.util.ArrayList 类

    关于 JDK 的集合类的整体介绍可以看这张图,本篇博客我们不系统的介绍整个集合的构造,重点是介绍 ArrayList 类是如何实现的. 1.ArrayList 定义 ArrayList 是一个用数组实 ...

  8. JDK1.8源码(六)——java.util.LinkedList 类

    上一篇博客我们介绍了List集合的一种典型实现 ArrayList,我们知道 ArrayList 是由数组构成的,本篇博客我们介绍 List 集合的另一种典型实现 LinkedList,这是一个有链表 ...

  9. Java源码之 java.util.concurrent 学习笔记01

    准备花点时间看看 java.util.concurrent这个包的源代码,来提高自己对Java的认识,努力~~~ 参阅了@梧留柒的博客!边看源码,边通过前辈的博客学习! 包下的代码结构分类: 1.ja ...

随机推荐

  1. (总结)Linux的chattr与lsattr命令详解

    PS:有时候你发现用root权限都不能修改某个文件,大部分原因是曾经用chattr命令锁定该文件了.chattr命令的作用很大,其中一些功能是由Linux内核版本来支持的,不过现在生产绝大部分跑的li ...

  2. [Unity]Unity开发NGUI代码实现ScrollView(滚动视图)

    Unity开发NGUI代码实现ScrollView(滚动视图) 下载NGUI包 导入NGUI3.9.1版本package 链接: http://pan.baidu.com/s/1mgksPBU 密码: ...

  3. Laravel 用户验证Auth::attempt fail的问题

    1.在laravel项目中,当使用Auth::attempt()用于用户验证时,Auth::attempt()会把密码通过Hash进行转换,变成一串不知啥的长字符,如果你在数据库里事先设置了明文的密码 ...

  4. MYSQL 主从服务器配置工作原理

    一.        主从配置的原理: Mysql的 Replication 是一个异步的复制过程,从一个 Mysql instace(我们称之为 Master)复制到另一个 Mysql instanc ...

  5. leetcode day7

    这道题弄的心好累..  [Reverse Linked List]206 描述: Reverse a singly linked list. click to show more hints. Hin ...

  6. sql数据库恢复 文件丢失误删除 误格式化置疑报错修复 数据库置疑修复总结/SQL SERVER 2000/2005/2008/2008R2

    数据库置疑的原因会有多种多样,不同的问题采用的步骤也会有所不同,以下的步骤不能适用所有的情况,但包括了一些基本的步骤. 数据库置疑是指数据库内部处于不一致的状态,很有可能会有数据丢失.我们推荐您从做数 ...

  7. Spring中各个jar包的作用

    spring.jar 是包含有完整发布模块的单个jar 包.但是不包括mock.jar, aspects.jar, spring-portlet.jar, and spring-hibernate2. ...

  8. Mysql表锁、行锁、页锁

    参考 http://www.jb51.net/article/50047.htm <MySQL行级锁.表级锁.页级锁详细介绍> 页级:引擎 BDB.表级:引擎 MyISAM , 理解为锁住 ...

  9. 除trigger()方法外的jquery手动触发事件

    trigger()可以触发指定事件是大家基本都知道的了. 除了trigger()之外我们也可以这样来触发: html <div id="box" style="he ...

  10. fastreport代码转

    2016-07-08 //打印主从表数据 string file = Application.StartupPath @"\MasterDetail.frx"; rptMaster ...