乐趣区

关于java:编程体系结构03Java集合容器

本文源码:GitHub·点这里 || GitEE·点这里

一、汇合容器简介

汇合容器是 Java 开发中最根底 API 模块,通常用来存储运行时动态创建的元素,根本特点如下:

  • 泛型特点,存储任意类型对象;
  • 动静扩容,存储任意数量对象;

这里对存储数量是受到程序和内存等环境制约的,从 List 的 get() 办法中能够看出,index 的范畴是 Integer.MAX_VALUE。

二、API 体系

三大外围接口:List、Set 继承 Collection, Map 独立接口

List 与 Set 体系

List 体系外围 API:ArrayList,LinkedList、Vector

Set 体系外围 API:HashSet、TreeSet、LinkedHashSet

Queue 队列 API:PriorityQueue、LinkedHashSet

Map 体系

Map 体系外围 API:HashMap、LinkedHashMap、TreeMap、Hashtable

三、根底容器详解

1、核心内容

  • 元素存储,增删改查判断等根底用法
  • API 办法中线程平安问题
  • 容器初始化大小与动静扩容机制
  • 底层数据结构特点
  • 同一接口或者不同接口体系容器比照

根本纯熟应用并了解汇合容器,须要晓得如上几块内容:API 根底用法,线程平安问题;容器大小与扩容;构造特点,数组、链表、哈希表;

2、API 体系详解

Collection:汇合容器的根接口,定义公共办法;

List 体系

  • ArrayList

保护 Object 数组实现,特点:查问快,增删慢,非线程平安,所以效率高。

  • LinkedList

底层保护链表数据结构实现,特点:查问慢,增删快,非线程平安,所以效率高。

  • Vector

底部保护 Object 数组,实现和 ArrayList 一样,然而 Vector 是线程平安,效率低。

Set 体系

  • HashSet

底层是应用了哈希表来反对的,特点:存取速度快,元素惟一且无序。

  • LinkedHashSet

底层数据结构是链表和哈希表,链表保障元素有序性,哈希表保障元素唯一性,非线程平安。

  • TreeSet

数据结构是红黑树,如果元素具备天然程序的个性,那么就依照元素天然程序的个性进行排序,或者基于比拟器自定义排序。

Map 体系 :

Map 接口的实现类,具备的特点:存储的数据都是以键值对的形式,键不能够反复,值可反复。

  • HashMap

底层应用 hashCode 表来实现向 HashMap 中增加元素,容许应用 null 值和 null 键,不保障元素的程序固定。

  • TreeMap

TreeMap: 基于二叉树的数据结构实现的,会对具备天然个性的键进行排序存储:元素的键具备天然个性,间接排序存储;不具备天然个性,实现 Comparable 接口,在 ComparaTo 中定义排序规定。

  • HashTable

线程平安,相对效率低,不容许应用 null 值。

3、容器遍历

  • 基于 for、foreach、while 流程管制
  • Iterable 迭代器外围接口
  • Lambda 表达式:遍历、分组、查问

四、源代码地址

GitHub·地址
https://github.com/cicadasmile
GitEE·地址
https://gitee.com/cicadasmile

举荐浏览:架构设计系列

架构设计

题目
架构设计:单服务. 集群. 分布式,根本区别和分割
架构设计:分布式业务零碎中,全局 ID 生成策略
架构设计:分布式系统调度,Zookeeper 集群化治理
架构设计:接口幂等性准则,防反复提交 Token 治理
架构设计:缓存管理模式,监控和内存回收策略
架构设计:异步解决流程,多种实现模式详解
架构设计:高并发流量削峰,共享资源加锁机制
架构设计:分布式服务,库表拆分模式详解
架构设计:分布式事务①概念简介和基础理论
架构设计:基于电商交易流程,图解 TCC 事务分段提交
架构设计:基于消息中间件,图解柔性事务一致性
退出移动版