一、Java集合
1. Java集合概述
从上面的集合框架图可以看到,Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,称为单列集合,另一种是图(Map),存储键/值对映射,称为双列集合。
Java集合大致可以分为Set、List、Queue和Map四种体系,其中List代表有序、可重复的集合;Set代表无序、不可重复的集合;而Map则代表具有映射关系的集合,Java 5 又增加了Queue体系集合,代表一种队列集合实现。
1. Java集合特点
二、Collection 底层实现
1. 概述
是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素
JDK 不提供此接口的任何直接实现,它提供更具体的子接口(如Set,List)实现
2. 源码解析
2.1 继承关系
public interface Collection<E> extends Iterable<E> {
iterable 接口是java集合大家庭的最顶级的接口之一了,实现此接口使集合对象可以通过迭代器遍历自身元素(迭代器在JDK1.8版本增加了可分割迭代器,更有利于并发处理)
- iterable 源码拓展
// 返回一个内部元素为T类型的迭代器(JDK1.5只有这个接口)
// iterator()方法,是接口中的核心方法,主要是获取迭代器,获取到的iterator有next(),hasNext(),remove()等方法
Iterator<T> iterator();
// 遍历内部元素,action意思为动作,指可以对每个元素进行操作(JDK1.8添加)
default void forEach(Consumer<? super T> action) {
}
// 创建并返回一个可分割迭代器(JDK1.8添加),分割的迭代器主要是提供可以并行遍历元素的迭代器,可以适应现在cpu多核的能力,加快速度。
default Spliterator<T> spliterator() {
return Spliterators.spliteratorUnknownSize(iterator(), 0);
}
2.2 成员方法
集合操作的常用方法,方便其他继承Collection的实现类使用
int size(); /*返回集合的大小 */
boolean isEmpty(); /*判断集合是否为空 */
Iterator<E> iterator(); /*返回集合中元素的迭代器 */
boolean add(E e); /*添加元素 */
boolean addAll(Collection<? extends E> c); /*添加集合C中所有元素 */
boolean remove