Java 数据结构
学数据结构么?头秃的那种
Marker_Sky
可以虚怀若谷 不可妄自菲薄
展开
-
Java 数据结构:Iterator 需要注意的点
文章目录前言一、前世今生二、一致性1. 强一致性2. 弱一致性三、迭代器种类1. 线性迭代器2. 链式迭代器 HashIterator四、总结和其它Iterable 接口实例注意总结前言Iterator 是 Java 数据结构框架的起始,它是一个顶级接口,梦开始的地方。让这个迭代器作为顶级接口可能是出于功能的考虑,不管怎样的数据结构,都需要遍历不是。那么就需要提供一种可以用来遍历的方式,让开发者使用也让 JVM 认识。一、前世今生JDK 1.0 的 Enumeration,因名字太长和方法数原创 2020-11-03 10:01:06 · 320 阅读 · 0 评论 -
Java 数据结构:LinkedList 读源码笔记
LinkedList特点有序,但内存空间中可能比较分散;存储相对较快、获取相对较慢;线程不安全。LinkedList 继承/实现继承 AbstractSequentialList:线性序列结构的抽象,继承于 AbstractList;抽象方法 listIterator(),子类必须实现此方法用于创建迭代器;内部封装使用该迭代器实现的 add()、set()、remove()等方法。public abstract ListIterator<E> listIterator原创 2020-10-30 17:55:48 · 177 阅读 · 2 评论 -
ArrayList:读源码笔记
ArrayList 实现或继承的类或接口:List 接口定义线性集合的抽象,定义了获取容量size()、是否为空isEmpty()、是否包含某元素contains(Object o)、添加add() 和 remove() 等方法。特点有序:存储和取出的按照顺序;有索引:包含一些带索引的方法;允许存储重复元素。AbstractList 抽象类定义线性表的进一步抽象,List 接口的骨干实现。从而最大限度地减少了实现由“随机访问”数据存储(如数组)支持的接口所需的工作。Ar.原创 2020-10-28 11:15:48 · 109 阅读 · 0 评论 -
ConcurrentHashMap 两个版本读源码笔记
JDK 1.7数据结构依旧是数组+链表,Segment 是一个 ReentrantLock 可重入锁:static final class Segment<K,V> extends ReentrantLock implements Serializable数据操作的时候,先定位到 Segment 数组的位置,然后尝试获取锁。某个线程获取锁成功就进行数据添加、移除等操作,这时其它线程需要操作数据,会进入 Segment 的锁队列(AQS)。等待独占线程释放锁后,后面的线程接着进行数据操原创 2020-10-24 10:27:25 · 283 阅读 · 0 评论 -
HashMap 灵魂拷问:从源码找寻答案
HashMap 基本概念键不可重复(可为 null),值可重复。如果键重复了,就无法定义值了。原理:Set 存 keykeyValue 键值对键值对合起来组成 Entry数组维护这些键值对 Object[entry<K,V>]键值对是链表实现模型HashCode 索引HashMap putHashMap...原创 2020-10-12 13:24:12 · 295 阅读 · 0 评论