1,常用数据结构简介
数据结构是指相互之间存在一种或多种关系的数据元素的集合,和集合中数据元素的关系组成。(数据机构=数据元素+元素关系)。常用的数据结构有:数组、栈、队列、链表、树、图、堆、散列表。
1)
数组 | 栈 | 堆 | 队列 | 链表 | 树 | 散列表(哈希表) | |
结构描述 | 内存中连续存储多个元素的结构 | 特殊线性表,只可在栈顶操作,先进后出, | 堆中某个节点的值总是不大于或不小于父节点值。 | 一端添加元素一端消费元素。先进先出 | 物理存储单元不连续、非顺序的存储结构。元素逻辑顺序通过链表指针地址实现 | 由n个有限节点组成一种具有层次关系的集合 | 根据键值对来存储访问 |
优点 | 查询、访问速度快 | 添加删除元素快 | |||||
缺点 | 数组大小固定后无法扩容,存储一种类型数据。删除慢 | 查找耗时 | |||||
适用场景 | 需频繁查找,增加删除少的场景 | 用于实现递归功能 | 多线程阻塞队列管理中 | 数据量小,需频繁增加删除操作 |
2,HashMap的实现原理
1)数据结构
jdk1.7以前:数组+链表 组成。数组Entry是HashMap的主体,链表是为了解决哈希冲突而存在的
jdk1.8起:HashMap由数组+链表/红黑树组成。当某个bucket位置的链表长度达到阈值8时,链表就转成红黑树。
2)