随笔分类 -  JDK源码分析

摘要:HashSet是基于HashMap来实现的,因为它的底层是通过HashMap来保存元素的。 1.属性 2.构造器 3.方法 3.1 boolean add(E e):如果此 set 中尚未包含指定元素,则添加指定元素 3.2 boolean remove(Object o):如果指定元素存在于此 s 阅读全文
posted @ 2018-08-08 16:04 51life 阅读(158) 评论(0) 推荐(0)
摘要:TreeMap是基于红黑树来实现的,它是根据键的自然顺序,或者创建时提供的comparator来排序的。 1.属性 2.构造器 3.方法 3.1:V put(K key,V value):将指定值与此映射中的指定键进行关联。如果该映射以前包含此键的映射关系,那么将替换旧值 插入操作可以分为两步:一是 阅读全文
posted @ 2018-07-27 14:06 51life 阅读(189) 评论(0) 推荐(0)
摘要:HashTable,它与HashMap不同之处有两点:1.HashTable是线程安全的 2.HashTable不允须key或者value为null。 1.属性 2.构造器 3.方法 3.1 put(K key,V value):将指定key映射到此Hash表中的指定value 进入rehash方法 阅读全文
posted @ 2018-07-23 11:08 51life 阅读(215) 评论(0) 推荐(0)
摘要:HashMap,非线程安全,允许使用null键和null值,这是它与HashTable的区别。 一 源码分析(基于JDK1.7) 1.属性 我们知道HashMap的底层结构是数组+链表Entry,也就是说table数组中存放的是Entry,而我们put(key,value)中的key和value存放 阅读全文
posted @ 2018-07-12 13:38 51life 阅读(329) 评论(0) 推荐(1)
摘要:vector的底层存储结构是数组,和ArrayList一样,不同的是vector是线程安全的,而ArrayList不是线程安全的。进入源码分析 1.属性 2.构造器 3.方法 add(E e):将指定元素添加到此向量的末尾 remove(int index):移除指定位置的元素 其它方法也是类似,这 阅读全文
posted @ 2018-07-10 09:49 51life 阅读(174) 评论(0) 推荐(0)
摘要:LinkedList,链接列表,它的底层结构是链表。它的特点是增删效率高,查询效率低。下面我们仍然从属性,构造器和方法三个方面来分析源码。 1.LinkedList的属性 这里有一个Node类,它是LinkedList的节点元素,承载着存放在LinkedList中的值,看下Node类 附上Linke 阅读全文
posted @ 2018-07-09 16:58 51life 阅读(180) 评论(0) 推荐(0)
摘要:对于ArrayList,顾名思义,称之为数组列表。要明白,它的底层结构是数组,也就是说,ArrayList存储的元素其实是放在了它内部的一个数组中,对ArrayList的操作,其实就是对它内部这个数组的操作。接下来,我们从它的属性,构造器,方法三个方面来分析源码。 1.ArrayList的属性 2. 阅读全文
posted @ 2018-07-06 09:53 51life 阅读(205) 评论(0) 推荐(0)