天天看点

集合根接口Collection

什么是集合?

集合是java用于存储数据所提供的容器。

集合框架一览:

集合根接口Collection

AbstractList 、AbstractSet、AbstractMap实际上都是中间接口。

这些 Abstractxxx 类提供了所对应的 接口 的框架实现。以最小化实现此接口所需的工作,由“随机访问”数据存储(如数组)支持。

所以为了简便,我们单另看单例集合Collection。

集合根接口Collection

图片来源冰河一角

上图中淡绿色背景覆盖的是集合体系中常用的实现类,分别是ArrayList、LinkedList、ArrayQueue、HashSet、TreeSet、HashMap、TreeMap等实现类也是我们着重要描述的部分。

集合存储的都是对象,类型可以不一致。

(tips:集合框架库在 java.util 包下,但支持多线程的集合类位于java.util.concurrent)

集合按照存储的结构可以分为单例集合以及双例集合。

单例集合对应的根接口为java.util.Collection

双利集合对应的根接口为java.util.Map

单例集合根接口Collection

Collection:用于存储一系列符合某种规则的元素,有三个子接口。List,Set,Queue。

Collection中的方法

方法 描述
int size() 返回此集合中有效个数
boolean isEmpty() 此集合是否为空
boolean contains(Object o) 此集合中是否含有对象 o
Iterator iterator() 返回实现遍历的迭代器
boolean add(E e) 将 e 这个对象添加到集合中
boolean remove(Object o) 把 o 对象从集合中移除
containsAll(Collection<?> c) 如果此集合包含指定集合中的所有元素,返回true
boolean addAll(Collection<? extends E> c) 将指定集合中的所有元素添加到此集合(可选操作)。
boolean removeAll(Collection<?> c) 删除所有相交元素
void clear() 清空集合中所有元素
boolean retainAll(Collection<?> c) 从这个集合中删除指定集合中不包含的所有元素。
boolean equals(Object o) 比较集合与此对象是否相等
int hashCode() 返回此集合的哈希码值
Object[] toArray() 返回一个包含此集合中所有元素的数组。
T[ ] toArray(T[ ] a) 返回一个包含该集合中所有元素的数组

List

List 代表了有序、可重复、不允许元素为空的集合,可直接根据元素的索引来访问,实现 List 的接口的类是 Vector 以及其子类 Stack 。

(tips:有序指的是按照1 2 3 4 插入那么遍历出的结果也是 1 2 3 4)

Set

Set 代表无序、不可重复、不允许元素为空的集合,只能根据元素本身来访问。实现 Set 接口的类有HashSet及其子类LinkedHashSet,子接口有EnumSet、SortedSet。以及实现Sorted的TreeSet。

Queue

实现Queue接口的接口和类分别是 Deque、PriorityQueue 以及实现 Deque 的类 LinkedList 和 ArrayDeque。

参考文档