Java 零基础全套教程,数据结构与集合源码,笔记 168-174
一、参考资料
【Java视频教程,java入门神器(附300道Java面试题剖析)】 https://www.bilibili.com/video/BV1PY411e7J6/?p=168\&share_source=copy_web\&vd_source=855891859b2dc554eace9de3f28b4528
二、笔记总结
168、数据结构概述与手写线性表、二叉树





















169、ArrayList 在 JDK 7 和 JDK 8 中的源码剖析













170、Vector、LinkedList 在 JDK 8 中的源码剖析









171、HashMap 在 JDK 7 中的源码剖析


markdown
- HashMap 中保存的是 Entry 对象,key 和 value 都是 Entry 对象的属性。
- HashMap 在 JDK 1.7 中底层数据结构是,数组+链表,JDK 1.8 中是,数组+链表+红黑树。
- 在 JDK 1.7 中,HashMap 在使用 put 方法添加元素时
- 会根据要添加元素的 key 的 hashCode 方法计算 Hash 值,然后根据 Hash 值计算出元素在数组中的存储位置。
- 当数组当前位置已经存在元素时,如果两个元素 key 的 hashCode 方法返回值不相同,则说明是两个不同的元素,把数组当前位置上原有的元素取出,然后把新的元素添加到数组当前位置上,新的元素的 next 属性指向原来的元素,形成**链表结构**,HashMap 中的元素都是 Entry 对象,Entry 对象有 next 属性,用于记录下一个元素的位置。
- 当数组当前位置已经存在元素时,如果两个元素 key 的 hashCode 方法返回值相同,equals 方法比较返回 true,说明是两个相同的元素,则把旧元素从数组位置上取出,新的元素放到数组位置上,**put 会返回被替换元素的 value 值**。
- 如果数组当前位置没有元素,则直接添加元素到数组当前位置,**put 方法返回 null**。






172、HashMap 在 JDK 1.8 中的源码剖析







173、LinkedHashMap、HashSet、LinkedHashSet 源码剖析








