![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
江湖故人相逢何必曾相识
这个作者很懒,什么都没留下…
展开
-
TreeSet源码解析以及与HashSet和HashMap的区别
继承关系1.实现Serializable接口,即支持序列化。2.TreeSet实现了Cloneable接口,意味着它能被克隆。3.实现Iterable接口,即能用foreach使用迭代器遍历得到集合元素。4.TreeSet实现了NavigableSet接口,意味着它支持一系列的导航方法。比如查找与指定目标最匹配项。5.继承AbstractSet,AbstractSet实现set,所以它是一个Set集合,不包含满足element1.eauqals(element2)的元素树,不重复,并且最多包含原创 2020-09-06 23:25:21 · 113 阅读 · 0 评论 -
TreeMap源码解读及底层结构红黑树介绍
继承关系1.TreeMap存储K-V键值对,通过红黑树(R-B tree)实现;2.TreeMap继承了NavigableMap接口,NavigableMap接口继承了SortedMap接口,可支持一系列的导航定位以及导航操作的方法,当然只是提供了接口,需要TreeMap自己去实现;3.TreeMap实现了Cloneable接口,可被克隆,实现了Serializable接口,可序列化;4.TreeMap因为是通过红黑树实现,红黑树结构天然支持排序,默认情况下通过Key值的自然顺序进行排序;基本属原创 2020-08-31 00:07:46 · 407 阅读 · 0 评论 -
ConcurrentHashMap1.7源码解读
写在前面的话有所坚持才会有所得,相信行动的力量。继承关系继承AbstractMap,实现ConcurrentMap和Serializable接口。具备map的基本属性,可序列化。ConcurrentMap接口,是一个能够支持并发访问的java.util.map集合,在map的基础上提供了4个接口 //插入元素 V putIfAbsent(K key, V value); //移除元素 boolean remove(Object key, Object value)原创 2020-08-17 00:33:36 · 285 阅读 · 0 评论 -
HashTable的源码和实践
继承关系Hashtable继承于Dictionary类,实现了Map接口。Map是"key-value键值对"接口,Dictionary是声明了操作"键值对"函数接口的抽象类。同时也可以被克隆和序列化。底层结构HashTable类中,保存实际数据的,依然是Entry对象。其数据结构与HashMap是相同的。也是数组加链表构造方法和初始化一些基本属性也与hashmap类似基本属性 private transient Entry<?,?>[] table; /**原创 2020-08-13 00:11:39 · 129 阅读 · 0 评论 -
HashSet原理和常用方法
写在前面的话学习还得继续,总是菜也不是个办法。继承关系从继承关系可以看出,HashSet可以被克隆,可以序列化,具备set的特性。底层结构由构造方法可以看出底层是HashMap,也就是Hash表。 private transient HashMap<E,Object> map; // Dummy value to associate with an Object in the backing Map private static final Object P原创 2020-07-29 01:25:21 · 430 阅读 · 0 评论 -
HashMap源码初尝及应用
思维导图思维导图是个好东西,哈哈继承关系public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable {可以看出具有map的通性,也能够被克隆底层结构hashMap的hash算法JDK1.7中static int hash(int h) { // This function ensures that has原创 2020-07-27 01:20:53 · 177 阅读 · 0 评论 -
集合-Vector 的常用方法源码及使用场景
Vector继承关系public class Vector<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable从继承关系可以看出Vector继承于AbstractList,实现了List、RandomAccess、Cloneable、 Serializable等接口。1.Vector 继承了AbstractLi原创 2020-07-23 16:45:14 · 772 阅读 · 2 评论 -
集合-ArrayList和LinkedList常见源码及异同
ArrayList继承关系public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable内部结构和初始化底层是可变数组 /** * Default initial capacity. * 初始化容量,这个没发现在初始化的时候使用,在扩容的时候有使用原创 2020-07-22 21:04:10 · 99 阅读 · 0 评论