您的位置:首页 > 编程语言 > Java开发

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
这些集合类的时候在详细讲讲这对基友
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: