概述
Java
中的集合框架有两种,一种是Map
,一种是Collection
,Collection
是一种线性的数据结构,Map
则是一种key-value形式的数据结构。Java
中的集合框架十分常用,比如HashMap
,ArrayList
,LinkedList
等,下面介绍一下集合框架的关系,后续再深入每个类的内部,分析其实现原理与应用场景。
Collection
Collection
的派生类主要有三种,List
,Set
,Queue
。
List
在数据结构上可以称为链表,其特点是它记录了每个元素所在的位置,可以通过get(int index)
方法获取对应位置上的元素,或者通过set(int index, E value)
向指定位置插入元素,该位置之后的元素将依次后移一位。也可以通过indexOf(E value)
获取该元素在List中对应的位置。典型应用是ArrayList
,LinkedList
,Stack
。
Set
在数据结构上可以称为集合,其特点是它所包含的元素互不相同,其实也就是数学意义上的集合
。元素之间是否相同的判断,是调用equals(Object o)
方法进行判断,当不实现equals(Object o)
方法时,判断的是这两个元素在内存中的地址是否相同。典型应用是HashSet
,TreeSet
。
Queue
在数据结构上可以称为队列,其特点是队列中的元素在一个方向上总是先进先出的,可以通过offer(E value)
向队尾插入元素,也可以通过peek(E value)
从队首获取一个元素。Queue
的一个子类Deque
是一个双向队列,也就是既可以向对尾插入元素,也可以向队首插入元素,既可以从队首获取元素,也可以从队尾获取元素。在一个方向上,其同样满足队列的先进先出特性。典型应用有ArrayBlockingQueue
,LinkedList
,PriorityQueue
。
Map
Map
是key
与value
之间的映射关系,这种关系可以是一对一,一对多,多对一或多对多,根据不同的实现会有不同的映射关系与限制。常用的Cache
其实也是一种key
与value
的映射关系。典型应用有HashMap
,TreeSet
,LinkedHashMap
。
结语
第一篇我们总览了Java
的集合框架,下面将逐一介绍Collection
与Map
的常用实现以及其实现原理与核心算法。