源码(03) -- java.util.Collection<E>
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>的更多相关文章
- 源码(09) -- java.util.Arrays
java.util.Arrays 源码分析 ------------------------------------------------------------------------------ ...
- 源码(05) -- java.util.AbstractCollection<E>
java.util.AbstractCollection<E> 源码分析(JDK1.7) ------------------------------------------------- ...
- 源码(04) -- java.util.List<E>
java.util.List<E> 源码分析(JDK1.7) --------------------------------------------------------------- ...
- JDK1.8源码(五)——java.util.Vector类
JDK1.8源码(五)--java.lang. https://www.cnblogs.com/IT-CPC/p/10897559.html
- 源码(06) -- java.util.AbstractList<E>
java.util.AbstractList<E> 源码分析(JDK1.7) ------------------------------------------------------- ...
- 源码(07) -- java.util.Iterator<E>
java.util.Iterator<E> 源码分析(JDK1.7) ----------------------------------------------------------- ...
- JDK1.8源码(五)——java.util.ArrayList 类
关于 JDK 的集合类的整体介绍可以看这张图,本篇博客我们不系统的介绍整个集合的构造,重点是介绍 ArrayList 类是如何实现的. 1.ArrayList 定义 ArrayList 是一个用数组实 ...
- JDK1.8源码(六)——java.util.LinkedList 类
上一篇博客我们介绍了List集合的一种典型实现 ArrayList,我们知道 ArrayList 是由数组构成的,本篇博客我们介绍 List 集合的另一种典型实现 LinkedList,这是一个有链表 ...
- Java源码之 java.util.concurrent 学习笔记01
准备花点时间看看 java.util.concurrent这个包的源代码,来提高自己对Java的认识,努力~~~ 参阅了@梧留柒的博客!边看源码,边通过前辈的博客学习! 包下的代码结构分类: 1.ja ...
随机推荐
- CodeForces 617E XOR and Favorite Number
莫队算法. #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> ...
- JMS连接WMQ及收发消息
因为对JMS的了解也只算入门级,有些概念也很模糊,不过,卤煮会尽可能去介绍的.另外,sample code都调试过可以跑. 1.神马是JMS? jms即Java消息服务(Java Message Se ...
- mysql问题: alter导致速度慢
1 如何并行执行. 数据库里有一个数据量非常大的表,当对这个表进行alter的时候,这时候该表是只读的,由于数据量很大alter时间很长,如果这时候有insert或update操作,有什么办法在这期间 ...
- 图片拉伸iOS
- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight: (NSInteger)topCa ...
- uartz Spring与Spring Task总结
Spring对Quartz作了一个封装,同时,Spring自己也提供了一个任务定时器(spring-task),现把它总结一下. 对于Quartz,我们使用的时候主要是注重两个方面,一个是定时任 ...
- GoEasy消息推送
1. 从GoEasy获取appkey appkey是验证用户的有效性的唯一标识. 注册账号. GoEasy官网:https://goeasy.io 用注册好的账号登录到GoEasy的后台管理系统,创建 ...
- 学习vi(1)
原文地址:http://www.gentoo.org/doc/zh_cn/vi-guide.xml#doc_chap2 1. 新手上路 介绍 本教程将会向你展示如何使用vi──一个强大的可视化编辑器 ...
- iOS开发——Localizable.strings
这篇写的不多,但是绝对诚意满满.不会像别人一样,要不不详细,要不罗里吧嗦一堆. 1.创建Localizable.strings文件 Command+N—>iOS—>Resource—> ...
- 利用OpenSSL创建证书链并应用于IIS7
一.系统环境说明 Linux & OpenSSL Linux localhost -.el5 # SMP Tue Mar :: EDT x86_64 x86_64 x86_64 GNU/Lin ...
- java线程 — 创建和启动线程
创建和启动线程,传统有两种方式: 方式1:继承Thread类: 方式2:实现Runnable接口: 线程类(java.lang.Thread):Thread类和Thread的子类才能称之为线程类.阅读 ...