jdk源码阅读之 java.util.Collection
2016-12-25 23:57
260 查看
作用
Collection还是一个泛型接口, 主要规范了集合操作的一些必要方法, 许多方法都接受一个
Collection,而不是去接受
List,
Set等参数来增强方法实用性
Collection还继承自
Iterable表示允许被迭代
子类有:
Set List Map SortedSet SortedMap HashSet TreeSet ArrayList LinkedList Vector Collections Arrays AbstractCollection
主要方法
查询类方法列表int size();
返回集合大小
boolean isEmpty()
返回集合是否为空, 一般实现就是
return this.size() == 0
boolean contains(Object o);
检查一个元素是否在集合内, 这个方法可能会抛出
ClassCastException和
NullPointException
文档说会抛出这些异常, 但是我简单找了一下常用的类, 没发现有这两种异常抛出
Iterator<E> iterator();
这个就是从
Iterable中继承过来的方法, 返回一个迭代器来方便进行迭代
Object[] toArray();
这个方法将集合内所有元素放到一个数组中返回
这个方法是为了方便使用
array api而要求提供实现, 如
Arrays类里的一些方法
<T> T[] toArray(T[] a);
这个方法和上一个方法类似,只是接受一个数组参数, 这个方法会将所有内容往这个数组里面放, 如果数组太小,则会返回一个新的数组, 如果数组容量足够则不会返回新的数组,所有集合内的元素都会放到这个传入的数组里
这个方法和上一个方法还有一个区别就是这个方法是带泛型的, 使用上更加方便,可以传入一个0大小的数组来少写一些
Object[]转换为
T[]的代码
操作类的方法列表
修改类的方法可能会返回
UnsupportedOperationException因为有一些集合是
Immutable就是不可变集合,只能查询
boolean add(E e)
添加一个元素到集合里, 返回是否添加成功
boolean remove(Object o)
从集合里删除一个元素, 返回是否删除成功
boolean containsAll(Collection<?> c);
检查指定集合内的元素是否都在当前集合存在,存在返回
true,不存在返回
false, 一般使用的是
boolean contains(Object o);这个方法来实现
boolean addAll(Collection<? extends E> c);
将指定集合的所有元素都添加到当前集合, 可能会抛出
NullPointerException
boolean removeAll(Collection<?> c);
从当前集合中移除指定集合中的所有元素, 调用这个方法最终达到的效果就是当前集合中不再存在传入集合里的所有元素
boolean retainAll(Collection<?> c);
从当前集合中删除其它所有不在传入集合中的元素, 最终达到的效果就是当前集合中得所有元素都能在传入集合中找到
c.containsAll(this) == true
void clear();
清空集合, 当前集合会变成一个空集合
isEmpty() == true
集合类还要求重写
equals和
hashCode, 这对基友一般要重写都是同时要求的, 后面到
HashXXX这些集合类的时候在详细讲讲这对基友
相关文章推荐
- JDK源码(1.7) -- java.util.AbstractCollection<E>
- 【JDK源码阅读2-util】Collection-List
- jdk源码阅读之 java.util.Iterator
- 【JDK源码阅读4-util】Collection-List---LinkedList
- JDK源码(1.7) -- java.util.Collection<E>
- JDK源码阅读—基本集合类(java.util)
- Jdk源码阅读之Java.util.concurrent
- 【JDK源码阅读5-util】Collection-List---Vector
- 【JDK源码阅读1-util】Collection
- 【JDK源码阅读6-util】Collection-Set
- 《java.util.concurrent 包源码阅读》09 线程池系列之介绍篇
- java类库的阅读笔记_jdk1.7.0_40_java.util.ArrayList
- 【jdk源码解析三】java.util.Hashtable
- 《java.util.concurrent 包源码阅读》06 ArrayBlockingQueue
- JDK源码阅读之Collection分析
- 《java.util.concurrent 包源码阅读》12 线程池系列之ThreadPoolExecutor 第二部分
- 《java.util.concurrent 包源码阅读》13 线程池系列之ThreadPoolExecutor 第三部分
- 解析java.util集合类源码(Collection和AbstractCollection篇)
- java类库的阅读笔记_jdk1.7.0_40_java.util.concurrent.locks.ReentrantReadWriteLock
- java类库的阅读笔记_jdk1.7.0_40_java.util.concurrent.locks.LockSupport