Java
232 篇笔记
- 5.19 List对比historical
1. ArrayList vs LinkedList ArrayList LinkedList ----------- ---------------------------------------------------- -------------------- 底层实现 数组 双向链表 复杂度
- 5.21 TreeSethistorical
1. 是什么 无序、不重复的集合,使用TreeMap实现 2. 使用 3. 源码分析 3.1. 构造方法 3.2. 属性 3.3. 其他方法 调用的TreeMap的方法,效率O(logN) 4. 总结 底层使用TreeMap实现,value使用newObject作为占位符
- 5.22 String比较historical
1. StringBuilder vs StringBuffer vs String String StringBuffer StringBuilder ----------- ------ ------------ ------------- 是否线程安全 √ √ × 是否可变 × √ √
- 5.23 SynchronizedListhistorical
1. 是什么 线程安全的list 2. 如何使用 3. 源码分析 3.1. synchronizedList方法 3.1.1. 调用SynchronizedList的构造方法 3.1.2. 初始化锁对象为当前正在构造的list 3.2. 其他方法 3.2.1. 使用synchronized代码块加锁
- 5.24 TreeMaphistorical
1. 是什么 基于红黑树(平衡二叉搜索树)实现,效率为O(logN)的key-value对。 迭代时输出的顺序是 - 按照key的自然顺序来遍历的 - 也可以使用自定义的Comparator进行排序 2. 使用 3. 源码分析 3.1. uml 3.2. 构造方法 3.3. put 3.4. get
- 5.25 Vectorhistorical
1. 是什么 线程安全的list 2. 如何使用 3. 源码分析 3.1. uml 可以看出是个List,可以克隆,可以序列化,可以使用下标访问 3.2. 构造方法 默认初始化长度为10,扩容时候的增量为两倍 3.3. add方法 不扩容的时候O(1),扩容O(N) 3.3.1. 加了synchro
- 5.26 fail-fasthistorical
1. fail-fast与fail-safe fail-fast:如果一个系统,当有异常或者错误发生时就立即中断执行,这种设计称之为fail-fast fail-safe:如果一个系统,可以在某种异常或者错误发生时继续执行,不会被中断,这种设计称之为fail-safe 2. Java迭代器的设计 f
- 5.27 JDK1.7historical
1. 问题 1.1. 手写HashMap 1.1.1. Entry 1.1.2. put操作 1.1.3. get操作 1.1.4. remove操作 1.2. 为什么构造函数中需要把capacity转成2的power 跟indexFor计算数组下标有关 不是计算Hash后对table.length
- 5.28 JDK1.8historical
1. 是什么 实现O(1)存取效率的key-value对数据结构 2. 如何使用 3. 原理分析 3.1. uml 可克隆,可序列化,实现了Map 3.2. 构造方法 3.3. put方法 总体伪算法如下: - 计算key的hash值 - 使用hash值&数组长度1计算改数据存放的位置i - tab