![](https://img-blog.csdnimg.cn/20190217192417546.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
java8集合工具类源码解析
文章平均质量分 93
分享java8中Map, Set, List, Queue,Deque等集合类接口的常用实现类的源码解析
孙大圣666
这个作者很懒,什么都没留下…
展开
-
Java8 EnumMap / EnumSet 源码解析
目录一、EnumMap1、定义2、put /putAll /get3、remove /clear二、EnumSet1、定义2、noneOf /allOf /of /range3、copyOf /complementOf三、RegularEnumSet1、add /addAll /addRange /complement2、remove /removeAll /clear /retainAll3、size / contains ...原创 2020-05-28 11:31:49 · 515 阅读 · 0 评论 -
java8 TreeMap接口实现源码解析
一、类继承图二、SortedMap接口概述和使用 SortedMap表示一个维护了key的顺序的Map,通过key本身实现的Comparable接口或者SortedMap实例初始化时指定Comparator实例来排序。如果插入的key没有实现Comparable接口,也不能被Comparator实例比较,则会抛出异ClassCastException。注意实现Compara...原创 2019-01-20 19:28:46 · 934 阅读 · 0 评论 -
java8 HashMap特点/实现概述
一、接口继承图二、接口功能概述Map接口包含的方法如下:其中部分方法时java8新增的,下列方法时是不太常用的,且都是Map接口中的default方法。getOrDefault(Object key, V defaultValue) 如果存在key返回对应的value,否则返回defaultValue replaceAll(BiFunction<? super K,...原创 2018-12-16 11:19:03 · 3139 阅读 · 0 评论 -
java8 HashMap数据结构实现源码解析
目录一、基础元素Node二、红黑树元素TreeNode1、类定义和类属性2、基础方法:3、红黑树插入元素实现4、红黑树的查找实现5、红黑树的形态转换实现6、红黑树的扩容切分实现一、基础元素Nodestatic class Node<K,V> implements Map.Entry<K,V> { //key的ha...原创 2018-12-16 19:22:00 · 3161 阅读 · 0 评论 -
java8 HashMap接口实现源码解析
目录一、类属性二、静态方法三、类构造器方法四、Map接口实现一、类属性 /** * 默认的初始容量是16,必须是2的倍数 */ static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 /** * 最大容量 */ stati...原创 2018-12-23 13:19:58 · 691 阅读 · 0 评论 -
java8 LinkedHashMap接口实现源码解析
一、HashMap遍历时为什么不是有序的? 参考上一篇文章java8 HashMap接口实现,HashMap遍历的时候是按照哈希桶数组来遍历的,如果哈希桶内包含多个元素则遍历桶内所有元素后再遍历下一个哈希桶。而元素的插入时是根据key的hash值来随机分布到哈希桶中的,并且同一个桶内的元素由于扩容或者转换成红黑树结构,顺序也会不断发生改变。所以HashMap遍历时顺序是不固定的,跟插...原创 2018-12-23 19:18:29 · 942 阅读 · 0 评论 -
java8 TreeMap红黑树节点删除源码解析
目录一、红黑树的规则二、红黑树节点删除整体分析三、红黑树节点删除具体情形分析四、TreeMap删除节点源码解析 红黑树添加节点的平衡操作相对简单,具体分析参考java8 TreeMap接口实现源码解析,红黑树节点删除需要考虑的情形和翻转动作更复杂。综合各博客大神对该问题的分析,以TreeMap中红黑树节点删除相关代码为例,记录下自己对该问题的分析和理解,欢迎指正。...原创 2019-01-27 18:05:25 · 1188 阅读 · 6 评论 -
java8 WeakHashMap接口实现源码解析
一、类继承关系二、概述 WeakHashMap是基于基于弱引用key和哈希表的Map接口实现类,通常用于实现对内存敏感的本地缓存。使用WeakHashMap时要求key不能被其他常驻内存的实例(如WeakHashMap中的value)引用,如果必须引用,则将引用方包装成WeakReference,如:m.put(key, new WeakReference(value))。当只有...原创 2019-01-31 12:23:23 · 229 阅读 · 0 评论 -
java8 HashSet,LinkedHashSet,TreeSet接口实现源码解析
一、类继承关系二、接口功能概述Iterable接口包含的方法如下,实现该接口,则可以用for循环的方式遍历集合。for循环遍历的核心在iterator()方法返回的迭代器Iterator,spliterator()方法返回的Spliterator用于并行流中将一个计算任务拆分成多个并行任务。Iterator接口包含的方法如下: Iterator接口主要用于取代低...原创 2019-02-02 10:53:08 · 511 阅读 · 0 评论 -
java8 ArrayList,Vector,Stack接口实现源码解析
一、类继承关系二、接口功能概述List接口表示一个有序的集合,也称为列表,调用方可以控制元素插入列表的位置,可以根据元素在列表中的位置随机访问某个元素,也可以搜索指定元素。List接口提供了一个特殊的迭代器ListIterator,该迭代器扩展自Iterator,增加了倒序遍历,添加元素,修改元素的方法。两者包含的方法如下:参考用例如下: @Test ...原创 2019-02-02 16:37:37 · 262 阅读 · 0 评论 -
java8 LinkedList接口实现源码解析
一、类继承关系二、接口说明1、Queue接口 Queue接口继承自Collection接口,表示一个先进先出队列,所有的新元素都插入到队尾,从队首获取元素。Queue接口有6个核心方法,两两成对,add和offer表示添加元素到队尾,remove和poll是移除并返回队首的元素,element和peek方法时返回队首的元素但不移除,前者操作失败时如队列已满添加失败或者队列为空移除获...原创 2019-02-03 16:38:26 · 2576 阅读 · 0 评论 -
java8 ArrayDeque接口实现源码解析
一、类继承关系Deque接口说明和使用参考上一篇java8 LinkedList接口实现源码解析 二、接口实现 ArrayDeque是基于数组的Deque接口实现类,内存存储结构简单,当需要FIFO队列,LIFO队列或者Stack时,官方推荐优先使用ArrayDeque。线程不安全,会自动扩容,遍历时修改会快速失败。1、全局变量和公共方法/** * 保...原创 2019-02-03 17:59:00 · 655 阅读 · 0 评论 -
java8 PriorityQueue接口实现源码解析
一、类继承关系二、使用说明 PriorityQueue是支持排序的FIFO队列,内部实现是基于数组的二叉堆,数组的第一个元素为队列中最小的元素,队列的head,每次执行poll(),remove(),peek(),element()方法时都是操作队列的head元素。通过循环调用poll()方法直到返回null可保证按照排序好的顺序遍历,但是通过iterator()返回的迭代...原创 2019-02-17 19:15:07 · 1012 阅读 · 0 评论