Java基础集合框架结构分类图形

集合

  • 集合分类 分类图
  • Collection 分类
    • Collection集合子结构之List合集
    • Collection集合子结构之Set合集
    • Collection集合子结构之Queue合集
  • Map 分类

集合就是一个放数据的容器,准确的说是放数据对象引用的容器

集合分类 分类图

java中集合分类有两大接口CollectionMap

集合
Collection
Map

Collection 分类

Collection集合的架构粗略分类 List Queue 和Set

Iterable
Collection
List
Set
Queue

1.首先Collection集合是迭代接口Iterable的子接口,整个Collection都是在可迭代遍历范围的类型,Iterable接口中返回基础迭代器Iterator和分割迭代器Spliterator为提供基础迭代遍历方式

对于不同的具体实现类有不同的底层数据结构,具体的迭代方式又根据自身变化可能有变化或者扩展 有增强迭代器皿如List的增强双向遍历迭代ListIterator

另外对于分割迭代器Spliterator而言,它适合将大数据集合分割成小集合处理,其底层原理式并行流,而结合流的处理方式是现有常见的代码编写,流(Stream)和Collection集合的结合应用

2.对于Collection集合和其通用默认功能实现的AbstractCollection 定义了整个Collection架构的基础功能架构(详情介绍链接),Collections作为Collection集合框架的工具类为其提供常用方法实现

Collections
Collection
AbstractCollection
AbstractList
AbstractSet
AbstractQueue

抽象类架构每种数据结构都有其抽象类,专门针对自身的集合类型定位提供核心抽象方法或默认通用实现类型

Collection集合子结构之List合集

Collection (接口)
List (接口)
AbstractList (抽象类)
AbstractSequentialList (抽象类)
ArrayList
Vector
LinkedList
Stack
CopyOnWriteArrayList

其中VectorStack已经过时不用了, Vector被ArrayList替代Stack被ArrayDeque

在List架构中,AbstractList为其提供核心抽象方法和默认通用实现功能,而其子抽象类AbstractSequentialList 则在此基础上扩展了专门为链表结构处理的功能

具体的子类上ArrayList是基于动态数组, 集合框架中最灵活的数据结构之一LinkedList如果作为list使用,其迭代功能基础简化实现是在AbstractSequentialList中提供

此外就是专门为List框架设计的线程安全的类CopyOnWriteArrayList,核心是只在写操作时加锁,适合读多写少场景

Collection集合子结构之Set合集

Collection (接口)
Set (接口)
SortedSet (接口)
NavigableSet (接口)
AbstractSet (抽象类)
HashSet
TreeSet
EnumSet
LinkedHashSet
CopyOnWriteArraySet

set框架结构最大的特性就是 元素不可重复,另外部分类是无序,但也有排序存在 如TreeMapLinkedHashSet

有序性
LinkedHashSet 双向链表+(哈希桶+链表+红黑树) 元素可以按照插入顺序输出 底层是LinkedHashMap
TreeSet 红黑树结构 元素可以按照大小输出,底层是TreeMap
无序性:
HashSet 哈希桶+链表+红黑树 ,无序,底层是HashMap
线程安全的
CopyOnWriteArraySet 底层是CopyOnWriteArrayList,也是写操作加锁,适用 读多写少 场景

Collection集合子结构之Queue合集

Collection (接口)
Queue (接口)
Deque (双端队列接口)
BlockingQueue (阻塞基本队列接口)
BlockingDeque (双端队列接口)

整体Queue架构划分在基本队列Queue 上 衍生出双端队列Deque 以及 基本队列的线程安全的 阻塞基本队列接口BlockingQueue,而双端队列接口又衍生出线程安全的阻塞双端队列接口BlockingDeque

基本队列Queue架构详情介绍
架构图

Collection (接口)
Queue (接口)
AbstractQueue (抽象类)
PriorityQueue (优先级)
ConcurrentLinkedQueue (非阻塞线程安全基本队列)
LinkedList (单向链表)

首先整个Queue 架构是在Queue接口基本队列基础上的(单向链表) 其主要实现类有最灵活的的数据结构LinkedList,和 基于二次堆(最小堆)的PriorityQueue
还有非阻塞线程安全的ConcurrentLinkedQueue

双端队列Deque架构详情介绍
架构图

Collection (接口)
Queue (接口)
Deque (双端队列接口)
BlockingDeque (阻塞双端队列接口)
LinkedBlockingDequet (唯一实现类)
ConcurrentLinkedDeque (非阻塞)
ArrayDeque (动态环绕数组)
LinkedList (链表)

常见实现类有ArrayDeque和 LinkedList,子接口BlockingDeque以及阻塞双端队列实现类LinkedBlockingDeque详情介绍,还有ConcurrentLinkedDeque

阻塞基本队列BlockingQueue架构详情介绍
架构图

Collection (接口)
Queue (接口)
BlockingQueue (阻塞接口)
DelayQueue
LinkedBlockingQueue
ArrayBlockingQueue
PriorityBlockingQueue
SynchronousQueue

Map 分类

Map整体结构

Map (接口)
SortedMap (排序接口)
ConcurrentMap (并发接口)
SortedMap (导航接口)
AbstractMap (抽象类)
EnumMap
IdentityHashMap
Hashtable
Properties
ConcurrentHashMap
ConcurrentSkipListMap

ConcurrentMap 接口下的类是为Map框架提供线程安全的类,核心思想是分段哈希桶锁 和 基于跳表两个思路详情点击介绍链接,至于HashTable 这个已经过时舍弃不怎么用了,而SortedMap是为Map框架提供排序功能的,其具体实现类是TreeMap

现在就具体看抽象类下面实现的具体的Map实现类
集合框架 Map接口和抽象类AbstractMap详情介绍链接

Map (接口)
SortedMap (排序接口)
SortedMap (导航接口)
AbstractMap (抽象类)
TreeMap
HashMap
LinkedHashMap

HashMap:基于哈希桶+链表+红黑树的数据结构
TreeMap:基于红黑树
LinkedHashMap :基于HashMap的数据结构 + 双向链表结构

你可能感兴趣的:(java,jvm,开发语言)