目录 Java 集合源码分析(一)HashMap 1. 概要 2. JDK 7 的 HashMap 3. JDK 1.8 的 HashMap 4. Hashtable 5. JDK 1.7 的 ConcurrentHashMap 6. JDK 1.8 的 ConcurrentHashMap 7. 最后补充一下 HashMap 中的一些属性和方法 附:更这个系列感觉自己像是又挖了一个坑…
@(Java)[Reference] Java Reference 源码分析 Reference对象封装了其它对象的引用,可以和普通的对象一样操作,在一定的限制条件下,支持和垃圾收集器的交互.即可以使用Reference对象来引用其它对象,但是最后还是会被垃圾收集器回收.程序有时候也需要在对象回收后被通知,以告知对象的可达性发生变更.   Java提供了四种不同类型的引用,引用级别从高到低分别为FinalReference,SoftReference,WeakReference,PhantomR…
element-ui button组件 radio组件源码分析整理笔记(一) element-ui switch组件源码分析整理笔记(二) element-ui inputNumber.Card .Breadcrumb组件源码分析整理笔记(三) element-ui Progress.Badge.Alert组件源码分析整理笔记(四) element-ui Tag.Dialog组件源码分析整理笔记(五) element-ui input组件源码分析整理笔记(六) element-ui Pagina…
Carousel 走马灯源码分析整理笔记,这篇写的不详细,后面有空补充 main.vue <template> <!--走马灯的最外层包裹div--> <div class="el-carousel" :class="{ 'el-carousel--card': type === 'card' }" @mouseenter.stop="handleMouseEnter" @mouseleave.stop="…
概述 在前文:java集合源码分析(二):List与AbstractList 和 java集合源码分析(一):Collection 与 AbstractCollection 中,我们大致了解了从 Collection 接口到 List 接口,从 AbstractCollection 抽象类到 AbstractList 的层次关系和方法实现的大体过程. 在本篇文章,将在前文的基础上,阅读 List 最常用的实现类 Arraylist 的源码,深入了解这个"熟悉的陌生人". 一.Array…
概述 HashMap 是 Map 接口下一个线程不安全的,基于哈希表的实现类.由于他解决哈希冲突的方式是分离链表法,也就是拉链法,因此他的数据结构是数组+链表,在 JDK8 以后,当哈希冲突严重时,HashMap 的链表会在一定条件下转为红黑树以优化查询性能,因此在 JDK8 以后,他的数据结构是数组+链表+红黑树. 对于 HashMap ,作为集合容器,我们需要关注其数据的存储结构,迭代方式,能否存放空值:作为使用了数组作为底层结构的集合,我们还需要关注其扩容的实现:同时,针对哈希表的特性,我…
LinkedList简介 LinkedList是基于双向循环链表(从源码中可以很容易看出)实现的,除了可以当做链表来操作外,它还可以当做栈.队列和双端队列来使用. LinkedList同样是非线程安全的,只在单线程下适合使用. LinkedList实现了Serializable接口,因此它支持序列化,能够通过序列化传输,实现了Cloneable接口,能被克隆. LinkedList源码 以下是linkedList源码(加入简单代码注释): /* * @(#)LinkedList.java 1.6…
Java Collections API源码分析 侯捷老师剖析了不少Framework,如MFC,STL等.侯老师有句名言: 源码面前,了无秘密 这句话还在知乎引起广泛讨论. 我对教授程序设计的一点想法是: 同学们开始不会编程,最好的学习方式是读教材,敲代码,我还专门写了一篇博客指导同学们敲代码:<积极主动敲代码,使用Junit学习Java程序设计>,我认为阅读经典图书,积极主动敲5000行左右的代码,应该能解决语言基本语法的问题,基本程序设计的问题,基本工具(git,jdb,junit,id…
这两天在复习JAVA的知识点,想更深层次的了解一下JAVA,所以就看了看JAVA的源码,把自己的分析写在这里,也当做是笔记吧,方便记忆.写的不对的地方也请大家多多指教. JDK1.6中HashMap采用的是位桶+链表的方式,即我们常说的散列链表的方式,而JDK1.8中采用的是位桶+链表/红黑树的方式,也是非线程安全的.当某个位桶的链表的长度达到某个阀值的时候,这个链表就将转换成红黑树. 基本的数据结构: //链表节点 static class Node<K,V> implements Map.…
TreeSet简介 TreeSet 是一个有序的集合,它的作用是提供有序的Set集合.它继承于AbstractSet抽象类,实现了NavigableSet<E>, Cloneable, java.io.Serializable接口. TreeSet 继承于AbstractSet,所以它是一个Set集合,具有Set的属性和方法. TreeSet 实现了NavigableSet接口,意味着它支持一系列的导航方法.比如查找与指定目标最匹配项. TreeSet 实现了Cloneable接口,意味着它能…