java源码阅读接口篇之java.util.Collection

java.util.Collection是个接口,很容易和工具类java.util.Collections弄混淆。今天我就抽丝剥茧来研究一下这个接口。

这里我基于JDK1.7.0_80的Collections接口进行研究,以避免JDK1.8引入的StreamAPI和函数式编程接口。

一、接口定义:

public interface Collection<E> extends Iterable<E> {

Collection是继承自Iterable接口的,并且是V值集合结构,非K-V值集合。关于Iterable接口,我另有文章介绍。这里先不做说明:

值得注意的是,这个接口是JDK1.2版本才开始出现的。

二、接口里规定的方法:

1、集合大小

int size();

2、判断集合是否为空:

boolean isEmpty();

其实这个方法,在日常使用中经常被第一个方法size()掩盖住了光芒。我见过很多人都是调用size() == 0来进行判断。

3、迭代器模式的体现,当然这个也是继承自Iterable而来的。

Iterator<E> iterator();

注意Iterable接口是在java.lang包下面的。

4、适配器模式的体现:

Object[] toArray();
 <T> T[] toArray(T[] a);

5、增删查大家族:(没有改)

(1)增:

//增加一个
boolean add(E e);
//增加多个
boolean addAll(Collection<? extends E> c);

(2)删:

//删一个
boolean remove(Object o);
//删多个
boolean removeAll(Collection<?> c);
//全删掉
void clear();

(3)查:

//查一个
boolean contains(Object o);
//查多个,要求都在
boolean containsAll(Collection<?> c);

6、集合比较:

boolean equals(Object o);

7、hash值计算:

 int hashCode();

猜你喜欢

转载自blog.csdn.net/guohengcook/article/details/81430018