
集合框架
文章平均质量分 51
点滴~
进阶中的工程师
展开
-
Java 容器
java原创 2025-02-20 22:19:32 · 79 阅读 · 0 评论 -
Java 集合系列(8): Map接口源码
package java.util;import java.io.Serializable; import java.lang.*; import java.util.*; import java.util.function.*; import java.util.function.BiFunction; /** * * Map是一个有键值对映射的对象.map...转载 2018-04-17 16:45:14 · 542 阅读 · 0 评论 -
Java 集合系列(9): List接口源码
package java.util;import java.util.AbstractList;import java.util.AbstractSequentialList;import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.Comparat...转载 2018-04-17 18:15:30 · 775 阅读 · 0 评论 -
Java 集合系列(10): Set接口源码
package java.util; import java.util.*; /** * set集合不包含重复元素.并且至多有一个null元素. * 正如其名称所暗示的那样,这个接口模拟了数学的集合抽象. * * 除了继承了Collection接口,遵从构造器,add,equals,hashcode4个方法的规定外,Set接口还...转载 2018-04-17 20:47:55 · 198 阅读 · 0 评论 -
Java 集合系列(11): Queue接口源码
package java.util;/** * 设计用于在处理之前保留元素的集合。 除了基本的Collection操作之外,队列还提供额外的插入,提取和检查操作。 * 这些方法中的每一种都有两种形式:如果操作失败,则抛出一个异常,另一种返回一个特殊值( null或false ,具体取决于操作)。 * 插入操作的后一种形式专门设计用于容量限制的Queue实现; 在大多数实现中,插入操作...原创 2018-04-17 21:30:19 · 230 阅读 · 0 评论 -
Java 集合系列(12): Deque接口源码
package java.util;/** *双向队列 *队头:可以插入可以删除 *队尾:可以插入可以删除 *继承Queue接口 * * @author Doug Lea * @author Josh Bloch * @since 1.6 * @param <E> the type of elements held in this collection ...原创 2018-04-17 23:05:05 · 469 阅读 · 0 评论 -
Java 集合系列(13): AbstractMap抽象类源码
package java.util;import java.util.Map.Entry;/** * @param <K> the type of keys maintained by this map * @param <V> the type of mapped values * * @author Josh Bloch * @author Neal...原创 2018-04-18 22:52:15 · 209 阅读 · 0 评论 -
Java 集合系列(14):SortedMap抽象类源码
package java.util;/** * * @param <K> the type of keys maintained by this map * @param <V> the type of mapped values * * @author Josh Bloch * @see Map * @see TreeMap * @see Sorte...原创 2018-04-18 23:23:48 · 230 阅读 · 0 评论 -
Java 集合系列(15):NavigableMap类源码
package java.util;/** * * @author Doug Lea * @author Josh Bloch * @param <K> the type of keys maintained by this map * @param <V> the type of mapped values * @since 1.6 *///继承了S...原创 2018-04-18 23:48:29 · 292 阅读 · 0 评论 -
Java 集合系列(16):TreeMap类源码
1.特征分析TreeMap是基于NavigableMap的红黑树的实现。默认排序方式:对key升序排序。TreeMap是非线程同步的。支持浅拷贝,序列化红黑树put节点时,分有无比较器分开讨论,这主要是从性能角度考虑的。代理模式:定义在subMap中的方法,将其行为委托给了NavigableMap来实现,代理模式的使用,消除了需要对Iterator方法进行类型检查的丑陋。2.源码分析简单介绍pac...原创 2018-04-20 00:11:24 · 354 阅读 · 0 评论 -
Java 集合系列(17):LinkedHashMap源码分析
转自:https://blog.youkuaiyun.com/caoxiaohong1005/article/details/799090831.特性分析说明:因为LinkedHashMap单词太长,所以以下都用LHM替代基本数据结构:数组+双向链表+红黑树因为继承HashMap,故常用属性和HashMap都一样。对于几个node指针的分析: HashMap中的Map.Entry:只有nextLinkedHa...转载 2018-05-08 10:18:03 · 195 阅读 · 0 评论 -
Java 集合系列(18):HashSet源码分析
写的不错,直接引用:https://blog.youkuaiyun.com/sugar_rainbow/article/details/68257208转载 2018-09-04 13:43:58 · 145 阅读 · 0 评论 -
Java 集合系列(7):Spliterator并行遍历迭代器
package java.util;import java.util.function.Consumer;import java.util.function.DoubleConsumer;import java.util.function.IntConsumer;import java.util.function.LongConsumer;/** * Spliterator是一个可...原创 2018-04-17 14:13:56 · 1302 阅读 · 0 评论 -
Java 集合系列(6): Predicate接口源码 && Consumer接口源码
package java.util.function;import java.util.Objects;/** * Predicate功能判断输入的对象是否符合某个条件 * @since 1.8 */@FunctionalInterfacepublic interface Predicate<T> { //Predicate函数编程 b...原创 2018-04-17 11:43:58 · 594 阅读 · 0 评论 -
深入Java集合系列之一:ArrayList
ArrayList简介ArrayList就是动态数组。通过增加和删除元素,它可以动态的改变数组的长度,实现了Collection的LIst接口,可以灵活的设置数组的大小。要注意的是ArrayList并不是线程安全的,所以一般是在单线程中使用ArrayList。源码分析add方法add方法重载了多个实现,包括add(E e)和add(int index,E e),由于没有指定插入的位置,每次插入操作...原创 2018-04-02 11:18:54 · 197 阅读 · 0 评论 -
深入Java集合系列之二:LinkedList
LinkedList的工作原理LinkedList底层使用的双端链表,即每个节点既包含指向其后继的引用也包括指向其前驱的引用,LinkedList实现了List接口,继承了AbstractSequentialList类,在频繁进行插入以及删除的情况下效率较高。LinkedList使用较多的是add、get和remove,源码的分析也将对这三个方法进行分析。add方法先看add方法:public b...原创 2018-04-02 12:11:47 · 151 阅读 · 0 评论 -
深入Java集合系列之三:HashMap
HashMap的工作原理概述 HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 在Java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外。HashMap实际上是一个“链表散列...原创 2018-04-02 14:00:38 · 163 阅读 · 0 评论 -
深入Java集合系列之五:PriorityQueue
前言今天继续来分析一下PriorityQueue的源码实现,实际上在Java集合框架中,还有ArrayDeque(一种双端队列),这里就来分析一下PriorityQueue的源码。PriorityQueue也叫优先队列,所谓优先队列指的就是每次从优先队列中取出来的元素要么是最大值(最大堆),要么是最小值(最小堆)。我们知道,队列是一种先进先出的数据结构,每次从队头出队(移走一个元素),从队尾插入一...转载 2018-04-15 21:48:27 · 160 阅读 · 0 评论 -
深入Java集合系列之六:CopyOnWriteArrayList
CopyOnWriteArrayList简介CopyOnWriteArrayList容器是Collections.synchronizedList(List list)的替代方案,CopyOnWriteArrayList在某些情况下具有更好的性能,考虑读远大于写的场景,如果把所有的读操作进行加锁,因为只有一个读线程能够获得锁,所以其他的读线程都必须等待,大大影响性能。CopyOnWriteArra...转载 2018-04-15 21:52:33 · 179 阅读 · 0 评论 -
深入Java集合系列之七:Hashtable
之前一直是看别人对于其他几个集合框架的分析,现在自己也来分析一下Hashtable的源码以及用法。首先,为了提高兴趣,我们先来看看这个源码是谁写的。* @author Arthur van Hoff * @author Josh Bloch * @author Neal Gafter * @see Object#equals(java.lang.Object) * @see ...原创 2018-04-15 22:35:15 · 287 阅读 · 0 评论 -
Java 集合系列(1): 总体框架
分析了Hashtable,发现对于面试很有帮助,以后准备都引导面试官问这些东西,所以开始系统的分析这个大框架。分析都以JDK8为主。先看看这个整个的关系:它们的关系如上图所示,标蓝的为抽象类,实线全箭头指的是extends(继承),虚线全箭头表示implement(实现),虚线半箭头依赖指的是这个类里面有依赖接口或者类的成员变量,比如HashSet类,继承AbstractSet抽象类,它里面又定义...原创 2018-04-16 22:52:00 · 229 阅读 · 0 评论 -
Java 集合系列(2): Iterator迭代器
package java.util;import java.util.function.Consumer;/** * @param <E> the type of elements returned by this iterator * * @author Josh Bloch * @see Collection * @see ListIterator * @se...原创 2018-04-16 22:55:57 · 151 阅读 · 0 评论 -
Java 集合系列(3): ListIterator迭代器
package java.util;/** * @author Josh Bloch * @see Collection * @see List * @see Iterator * @see Enumeration * @see List#listIterator() * @since 1.2 */public interface ListIterator<E&...原创 2018-04-16 23:32:36 · 191 阅读 · 0 评论 -
Java 集合系列(4): Iterable接口源码
package java.lang;import java.util.Iterator;import java.util.Objects;import java.util.Spliterator;import java.util.Spliterators;import java.util.function.Consumer;/** * 实现这个接口允许对象成为for-each循环...原创 2018-04-16 23:54:25 · 251 阅读 · 0 评论 -
Java 集合系列(5): Collection接口源码
package java.util;import java.util.function.Predicate;import java.util.stream.Stream;import java.util.stream.StreamSupport;/** *1.Collection接口是集合继承关系中的根接口(root interface),有些集合允许重复元素, * 有些集合...原创 2018-04-17 10:36:59 · 288 阅读 · 0 评论 -
深入Java集合系列之四:ConcurrentHashMap
术语定义术语英文解释哈希算法hash algorithm是一种将任意内容的输入转换成相同长度输出的加密方式,其输出被称为哈希值。哈希表hash table根据设定的哈希函数H(key)和处理冲突方法将一组关键字映象到一个有限的地址区间上,并以关键字在地址区间中的象作为记录在表中的存储位置,这种表称为哈希表或散列,所得存储位置称为哈希地址或散列地址。因为多线程环境下,使用Hashmap进行put操作...转载 2018-04-09 13:35:09 · 148 阅读 · 0 评论