Java集合源码学习
用于学习总结Java集合相关的知识
天明少侠
这个作者很懒,什么都没留下…
展开
-
Java集合-BlockingQueue【阻塞队列】
介绍阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素。源码public interface Blockin...原创 2018-12-16 17:55:39 · 238 阅读 · 0 评论 -
Java集合-TreeMap源码
数据结构红黑树源码成员变量/** * The comparator used to maintain order in this tree map, or * null if it uses the natural ordering of its keys. * @serial */private final Comparator<? super K> compa...原创 2018-11-09 15:22:09 · 169 阅读 · 0 评论 -
Java集合-Collection源码
介绍Collection接口是 (java.util.Collection)是Java集合类的顶级接口之一。所以不能直接实例化一个Collection,但是可以实例化它的一个子类,Collection接口派生了两个子接口Set和List,分别定义了两种不同的存储方式Java集合是java提供的工具包,包含了常用的数据结构:集合、链表、队列、栈、数组、映射等。Java集合工具包位置是ja...原创 2018-11-07 22:39:46 · 248 阅读 · 0 评论 -
Java集合-Hashtable
介绍和HashMap一样,Hashtable 也是一个散列表,它存储的内容是键值对(key-value)映射。Hashtable 继承于Dictionary,实现了Map、Cloneable、java.io.Serializable接口。Hashtable 的函数都是同步的,这意味着它是线程安全的。它的key、value都不可以为null。此外,Hashtable中的映射不是有序的。源...原创 2018-10-07 12:57:26 · 193 阅读 · 0 评论 -
Java集合-ArrayList源码
简介ArrayList是List接口的大小可变数组的实现,ArrayList底层是用一个Object数组来存储元素,ArrayList允许存储所有不同类型元素,包括null,允许插入重复元素(底层是一个Object数组)在用迭代器遍历ArrayList集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加、删除、修改),则会抛出ConcurrentModificationExcepti...原创 2018-09-13 20:39:38 · 166 阅读 · 0 评论 -
Java集合-HashMap源码
介绍 HashMap是一个散列表(也叫哈希表),存储的内容是键值对(key-value)映射。HashMap继承于AbstractMap并实现了Map、Cloneable、Serializable接口。HashMap不是线程安全的,同时key-value都可以为null,并且是无序的。 HashMap的初始大小为16,最大大小为2的30次方,默认的加载因子是0.75。初始容量只...原创 2018-09-01 19:35:33 · 264 阅读 · 0 评论 -
Java集合-Set源码
简介 Set集合不包含重复的元素,相同的元素只保存一个,不包含相等的两个元素,Set至多只能包含一个NULL元素。Set的实现类都是基于Map来实现的,其中HashSet是通过HashMap来实现的,TreeSet是通过TreeMap实现的。类图源码 参照JDK1.8版本Query Operations//返回集合的大小int size();//集合为空...原创 2018-07-26 17:44:29 · 287 阅读 · 0 评论 -
Java集合-Map源码
介绍 Map是一个key到value的映射接口,即map集合存储的是键值对,一个map不能包含重复的key,每个key至多只能映射一个值。Map接口中键和值一一映射. 可以通过键来获取值和设定值。类图源码 参照JDK1.8版本成员方法//返回map的大小int size();//map为空,返回trueboolean isEmpty();...原创 2018-07-19 22:00:30 · 264 阅读 · 0 评论 -
Java集合-Stack【栈实现】
概述 栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。出栈顺序: last in first out,...原创 2018-05-07 22:24:44 · 589 阅读 · 0 评论 -
Java集合-Queue【队列实现】
概述队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。出队顺序: 先进先出(FIFO—first in first out)队列又可分为: 顺序队列 循环队列Queue实现 java....原创 2018-04-20 19:16:45 · 722 阅读 · 0 评论 -
Java集合-ConcurrentHashMap
ConcurrentHashMap继承关系public class ConcurrentHashMap<K,V> extends AbstractMap<K,V> implements ConcurrentMap<K原创 2018-04-10 22:18:41 · 182 阅读 · 0 评论 -
Java集合-TreeSet
TreeSet介绍 TreeSet实现了NavigableSet接口,TreeSet的底层是一个NavigableMap,TreeSet的元素是有序的; TreeSet不允许添加null元素(NullPointerException),不允许添加重复元素,即第二次添加重复元素会失败,add(E e)函数返回false; TreeSet是非线程同步的,是不安全的,可采用如下...原创 2018-03-19 09:47:19 · 483 阅读 · 0 评论 -
Java集合-HashSet
HashSet实现了Set接口,HashSet是由HashMap实现的,不保证元素的顺序,HashSet存储的是HashMap的keyHashSet之类的集合不可以按索引号去检索其中的元素,也不允许有重复的元素,第二次添加重复元素会失败HashSet允许添加null元素,HashSet的实现是非线程同步的,不安全的在用迭代器遍历HashSet集合对象时,如果遍历过程中对集合对象的内容进行了修改(增...原创 2018-03-14 09:28:32 · 195 阅读 · 0 评论 -
Java集合-Vector
Vector底层是一个可增长的Object数组集合,可根据整型index下标去获取Vector集合元素,Vector的大小会在集合添加元素或删除元素后自动改变;Vector会有一个容量和容量增量,其容量不小于集合的真实大小,当Vector数组溢出时会增加容量;Vector的实现是线程同步的【synchronized】;在用迭代器遍历Vector集合对象时,如果遍历过程中对集合对象的内容进行了修改(...原创 2018-03-05 20:43:57 · 248 阅读 · 0 评论 -
Java集合-LinkedList
LinkedList是一个双向链表的集合,LinkedList实现了List和Deque接口,LinkedList允许存储所有不同类型的元素,包括null,允许插入重复元素(底层是一个双向链表,是一个个Node结点);LinkedList含有一个first头指针和last尾指针,涉及index的操作,LinkedList会根据就近原则从first或last指针开始进行查找;LinkedList的实原创 2018-03-02 11:36:58 · 320 阅读 · 0 评论