Java集合
文章平均质量分 94
采用JDK1.8的源码。
lippon
Think Different.
展开
-
Java Stream源码分析及知识点总结
概述什么是StreamStream就是一种流式的处理数据风格,这一种风格将要处理的元素集合看作一种流,流在管道中传输,并且可以在管道的节点上进行处理,比如进行筛选、排序和聚合。通俗地说,就是将Stream处理看作流水线作业,数据就是流水线上的原料,而对数据的操作就是流水线上对原料的加工。元素流在管道中经过中间操作(intermediate operation)的处理,最后由最终操作(terminal operation)得到前面处理的结果。Stream的特点Stream流处理是一个来自数据源的元素原创 2021-01-26 16:25:24 · 1273 阅读 · 0 评论 -
Java集合源码分析(十)——TreeSet
简介TreeSet就是一个集合,里面不能有重复的元素,但是元素是有序的。TreeSet其实就是调用了TreeMap实现的,所有,它也不是线程安全的。可以实现自然排序或者根据传入的Comparator进行排序。TreeSet通过iterator()返回的迭代器是fail-fast的。TreeSet 实现了NavigableSet接口,意味着它支持一系列的导航方法。比如查找与指定目标最匹配项。TreeSet的导航方法大致可以区分为两类,一类时提供元素项的导航方法,返回某个元素;另一类时提供集合的导航方法原创 2020-12-09 10:20:12 · 114 阅读 · 0 评论 -
Java集合源码分析(九)——HashSet
简介HashSet就是一个集合,里面不能有重复的元素,元素也是无序的。HashSet其实就是调用了HashMap实现的,所有,它也不是线程安全的。HashSet通过iterator()返回的迭代器是fail-fast的。源码分析由于HashSet的源码很短也很容易理解,这里就不再选取分析了。package java.util;import java.io.InvalidObjectException;public class HashSet<E> extends A原创 2020-12-09 09:42:05 · 167 阅读 · 1 评论 -
Java集合源码分析(八)——WeakHashMap
简介WeakHashMap 继承于AbstractMap,实现了Map接口。和HashMap一样,WeakHashMap 也是一个散列表,它存储的内容也是键值对(key-value)映射,而且键和值都可以是null。不一样的是,JDK1.8开始,HashMap中引入了红黑树,节点名从entry改成了node,而WeakHashMap还是没有被修改,还是采用链表形式的拉链法。所谓weak的含义,就是WeakHashMap中存储的键值是弱引用的,是很有可能被...原创 2020-12-08 10:42:57 · 127 阅读 · 0 评论 -
Java集合源码分析(七)——TreeMap
简介TreeMap 是一个有序的key-value集合,它的内部是通过红黑树实现的。TreeMap 继承于AbstractMap,所以它是一个Map,即一个key-value集合。TreeMap 实现了NavigableMap接口,说明它支持一系列的导航方法。比如返回有序的key集合。TreeMap 实现了Cloneable接口,说明它能被克隆。TreeMap 实现了java.io.Serializable接口,说明它支持序列化。TreeMap基于红黑树(Red-Black tree)实现。该映原创 2020-12-07 19:51:39 · 117 阅读 · 0 评论 -
Java集合源码分析(六)——ConcurrentHashMap
简介ConcurrentHashMap 是一个线程安全的散列表,存储的内容是键值对映射。ConcurrentHashMap 继承于AbstractMap,实现了ConcurrentMap、Serializable接口。ConcurrentHashMap 存储的键值对是无序的。源码分析父类AbstractMap接口ConcurrentMapSerializable字段 // 数组最大容量 private static final int MAXIMUM_CAPACITY原创 2020-12-03 11:35:49 · 158 阅读 · 0 评论 -
Java集合源码分析(五)——HashMap
简介HashMap 是一个散列表,存储的内容是键值对映射。HashMap 继承于AbstractMap,实现了Map、Cloneable、java.io.Serializable接口。HashMap 存储的键值对是无序的。源码分析public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable {}实现接口MapClon原创 2020-12-02 11:32:27 · 162 阅读 · 0 评论 -
Java集合源码分析(四)——Vector
简介Vector 是矢量队列,它是JDK1.0版本添加的类。继承于AbstractList,实现了List, RandomAccess, Cloneable这些接口。和ArrayList不同,Vector中的操作是线程安全的。源码分析public class Vector<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializ原创 2020-12-01 10:12:02 · 117 阅读 · 0 评论 -
Java集合源码分析(三)——LinkedList
简介LinkedList是一个链表结构的列表,也可以被作为堆栈、队列或双端队列使用。它继承于AbstractSequentialList双向链表,实现了List、Deque、Cloneable、java.io.Serializable接口。源码分析public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Clone原创 2020-11-30 11:09:29 · 152 阅读 · 0 评论 -
Java集合源码分析(二)——ArrayList
简介ArrayList 是一个数组队列,相当于 动态数组。与Java中的数组相比,它的容量能动态增长。它继承于AbstractList,实现了List, RandomAccess, Cloneable, java.io.Serializable这些接口。其继承关系如下:源码分析实现接口ListRandomAccessCloneablejava.io.Serializable父类AbstractList字段elementData:就是Object类型的数组。存储着Arr原创 2020-11-29 20:08:04 · 155 阅读 · 1 评论 -
Java集合源码分析(一)——集合框架
集合框架如图所示Java集合是Java提供的工具包,主要包括常用的数据结构,包括:集合、链表、队列、栈、数组、映射等。集合的工具包位置是java.util.*集合主要可以分为四类:List列表;Set集合;Map映射;工具类(Iterator迭代器、Enumeration枚举类、Arrays和Collections)。...原创 2020-11-29 16:13:52 · 161 阅读 · 0 评论