跳至主要內容
HashMap

01、简介

HashMap是java集合框架中非常重要的一种类型,也是开发业务系统时最受欢迎的数据类型之一;
HashMap是一个散列表,数据是以键值对(Key-Value)的形式存储;
HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步;
HashMap 是无序的,不会记录插入的顺序;
HashMap 继承于AbstractMap,实现了 Map、Cloneable、java.io.Serializable 接口:


代码小郭...大约 10 分钟JAVA集合框架
ArrayList

01、简介

java.util.ArrayList 类是一个可以动态修改的数组容器,给开发者提供了相关的添加、删除、修改、遍历等常用功能。它与普通数组的区别就是它是没有固定大小的限制,底层基于数组实现容量大小动态扩容变化,我们可以随意添加或删除元素。允许null值的存在,同时还实现了RandomAccess、Cloneable、Serializable等能力接口。所以ArrayList是支持快速访问、复制、序列化的一种结构。

02、特点

  • 查找快
    由于底层数据结构是数组,数组在内存中是一块连续空间,因此可以根据地址+索引的方式快速获取对应位置上的元素,时间复杂度是O(1)。

  • 增删慢
    每次删除元素,都需要更改数组长度、拷贝以及移动元素位置,时间复杂度最差是O(n)。

  • 自动扩容机制
    默认数组大小是10,随着元素的增多而触发阈值自动进行扩容,每次扩容是到原先的1.5倍。


代码小郭...大约 4 分钟JAVA集合框架
集合框架

01、整体架构


02、总体概述

从全景图可以看出,Java集合框架主要包含两种类型的结构,一种是集合(Collection),一种是键值对映射(Map)。

Collection下面有三种子类型接口定义,分别是List、Set、Queue,再下面一层是抽象类如AbstractSet、AbstractList等,接着是具体的实现类,常用的有CopyOnWriteArrayList、ArrayList、LinkedList、HashSet、TreeSet、LinkedHashSet、SortedSet等。


代码小郭...大约 1 分钟JAVA集合框架
LinkedList

01、简介

链表(Linked list)是一种常见的基础数据结构,是一种线性表,但并不是按照线性的顺序存储数据,而是在每一个节点里存到下一个节点的地址。 链表可分为单向链表和双向链表。

一个单向链表包含两个值: 当前节点的值和一个指向下一个节点的链接。

一个双向链表有三个整数值: 数值、向后的节点链接、向前的节点链接。


代码小郭...大约 4 分钟JAVA集合框架