Java高并发与集合框架:JCF和JUC源码分析与实现
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第I部分 Java集合框架

Java集合框架(Java Collection Framework,JCF)是Java标准平台(J2SE)的重要组成部分,也是Java程序员必须掌握的关键知识。从Java诞生之初,Java集合框架就一直在改进、演化。目前,如果根据操作特性划分Java集合框架,则可以将其分成四大部分:List集合(线性集合)、Set集合(去重集合)、Queue集合(队列集合)和Map集合(K-V键值对集合);如果根据工作场景特性划分Java集合框架,则可以将其分成支持高并发场景的集合和不支持高并发场景的集合;如果根据提供者划分Java集合框架,则可以将其分成原生集合和由第三方组织提供的集合,如图I-1所示。

图I-1

• List集合:此类集合的基本特点是,集合内部使用一种线性表结构进行数据的实际存储,程序员可以按照指定的数据存入顺序获取数据,也可以按照需要操作集合的任意有效位置执行数据的存取操作。

• Set集合:此类集合的基本特点是,通过某种特定的规则,对集合内部的数据进行去重。此外,此类集合使用的是根据一定的内置规则确定的数据存储顺序,不一定使用程序员将数据存入集合的先后顺序。

• Queue集合:此类集合的基本特点是,程序员可以按照数据在集合中先入先出(FIFO)的顺序或先入后出(FILO)的顺序,从集合头部或集合尾部进行数据读/写操作。

• Map集合:此类集合主要用于读/写K-V键值对形式的数据,并且数据的Key键信息在此类集合中不允许有重复。具体的集合实现可以根据适用场景自行决定是否向程序员提供按照数据写入顺序进行数据读取的工作特性。

除了由Java标准平台(J2SE)提供的丰富的、可覆盖大部分使用场景的原生集合外,大量第三方组织也遵循(或部分遵循)Java容器框架的设计规范,提供了大量集合供自身功能或程序员使用。例如,Google Guava工具包提供了多种高性能集合实现,如ImmutableList、ImmutableSet、ImmutableMap等。

Java原生提供的各类集合,其性能虽然不是最优秀的,但这些集合的内部设计思想值得程序员借鉴到自己的日常工作中。该部分内容会为读者介绍Java原生的基本集合功能,对这些集合的内部工作原理进行剖析。