
Java基础
_抱歉打扰了
这个作者很懒,什么都没留下…
展开
-
Java源码分析——ArrayList
1、Java数据结构中重要的接口和类 Java中数据结构主要在java.util这个包下面,而数据结构的超级接口为Collection和Map,Conllection接口下面有几个重要的接口List、Queue、Set;而Map下面有ConcurrentHashMap、HashMap、Hashtable几个重要的子类。接下里对这些重要的子类从源码的角度进行分析 2、List中的Arra原创 2018-01-30 14:42:19 · 330 阅读 · 0 评论 -
Java源码分析——LinkedList
1、linkedlist是一个双向链表,其中有三个成员变量,和一个私有静态内部类 transient int size = 0; //linkedlist的逻辑长度 transient Node first; //指向第一个node的引用 transient Node last; //指向最后一个node的引用 这里的node是linkedlist的中的私有静态内部类,有三个成员变原创 2018-01-30 16:42:10 · 312 阅读 · 0 评论 -
Java源码分析——hashmap
hashmap起初是一个长度为16的数组,这个数组中每个值都是一个node对象,每次根据hash算法给这个值一个下标,当这个下标出现冲突时,当前Node中的元素next属性就等于这个重复的node对象,和当前Node组成一个单项链表,当链表长度为8时把链表转化为红黑树来处理。这是为了减少哈希碰撞,当链表长度为8时及时转换,能提高map的效率 1、在介绍hashmap之前首先简单来了解一下什么是二...原创 2018-01-31 15:33:04 · 262 阅读 · 0 评论 -
Java源码分析——ConcurrentHashMap
HashMap在高并发情况下添加值容易出现环形链,不能保证数据的安全性,所以ConcurrentHashMap作为替代方式出现了,concurrentHashmap比hashtable更加高效,因为hashtable是将整个对象锁住,当一个线程在操作时,其它线程不能有任何操作。 要理解它只需要理解一个重要的概念segment。每一个segment相当于一个hashmap,有2的N次方多个,保原创 2018-02-01 21:54:52 · 174 阅读 · 0 评论 -
手写HashMap
1、首先需要一个通用的接口,这个接口有put()、get()、size()方法,还有一个entry对象 public interface MyMap<K,V> { public V put(K key,V value); public V get(K key); public int size(); public interface Entry&...原创 2018-05-11 10:30:53 · 182 阅读 · 0 评论