
集合
hzau_itdog
努力,奋斗!
展开
-
Arrays.asList注意事项
方法源码: public static <T> List<T> asList(T... a) { return new ArrayList<>(a); }asList接受的是一个泛型类型的参数,再构造了一个ArrayList。然而基本类型是不支持泛型化的,但是数组支持,所以采用基本类型的数组转化后是将数组放入了构造...原创 2019-01-18 10:42:17 · 227 阅读 · 0 评论 -
jdk1.8集合框架源码解析(六)HashMap源码解析
对散列表的说明HashMap是散列表,它是基于高速存取的角度设计的,也是一种典型的“空间换时间”的做法。顾名思义,散列表能够理解为一个线性表,可是当中的元素不是紧密排列的,而是可能存在空隙。散列表(Hash table,也叫哈希表),是依据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值(key)映射到表中一个位置来访问记录(value),以加快查找的速度。这...原创 2019-01-08 19:15:54 · 363 阅读 · 0 评论 -
jdk1.8集合框架源码解析(五)LinkedList源码解析
一、LinkedList数据结构LinkedList是一种可以在任何位置进行高效地插入和移除操作的有序序列,它是基于双向链表实现的。他的数据结构如下:二、LinkedList的继承体系public class LinkedList<E> extends AbstractSequentialList<E> implements List&...原创 2019-01-07 16:12:04 · 409 阅读 · 0 评论 -
jdk1.8集合框架源码解析(四)ArrayList源码解析
ArrayList是我们日常开发中最常用的集合类甚至没有之一,了解其底层源码非常重要,以下源码基于jdk1.8.0_144版本一、ArrayList的数据结构集合框架数据结构是其灵魂,理解数据结构才能更好理解ArrayList的实现思路。ArrayList的数据结构如下:ArrayList其底层是一个动态数组,存储的元素是所有对象即Object,下面看ArrayList是...原创 2019-01-04 12:05:00 · 474 阅读 · 3 评论 -
jdk1.8集合框架源码解析(三)List、Set、Queue源码解析
List 是有序集合的顶级接口,Set是无序集合的顶级接口,Queue是队列的顶级接口List源码解析public interface List<E> extends Collection<E> { // Query Operations int size(); boolean isEmpty(); boole...原创 2019-01-03 17:05:18 · 305 阅读 · 0 评论 -
jdk1.8集合框架源码解析(二)Collection
Collection 是集合的顶层接口,相比于1.7有些许变化下面看下Collection接口的继承关系public interface Collection<E> extends Iterable<E>public interface Collection<E> extends Iterable<E> { //集合大小 ...原创 2019-01-03 15:47:02 · 355 阅读 · 0 评论 -
jdk1.8集合框架源码解析(一)Iterable
集合在Java中是比较重要的,在日常的使用中经常使用到,了解其底层源码,有利于我们更好的使用它,集合框架图:Iterable接口有三个方法 Iterator<T> iterator(); default void forEach(Consumer<? super T> action) { Objects.requireN...原创 2019-01-02 11:57:59 · 584 阅读 · 0 评论 -
红黑树的特性
红黑树的特性 红黑树的特性:(1)每个节点或者是黑色,或者是红色。(2)根节点是黑色。(3)每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!](4)如果一个节点是红色的,则它的子节点必须是黑色的。(5)从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。[这里指到叶子节点的路径...转载 2019-04-15 10:55:38 · 192 阅读 · 0 评论 -
jdk1.8集合框架源码解析(七)CopyOnWriteArrayList源码解析
一、简介CopyOnWriteArrayList是ArrayList的线程线程安全版本,其主要是通过volitle修饰数组本事保证写操作对其他线程可见性,写操作是使用ReentrantLock加锁,每次对数组的写操作,都完全拷贝一份新的数组来修改,修改完了再替换掉老数组,这样保证了只阻塞写操作,不阻塞读操作,实现读写分离。二、继承体系public class CopyOnWr...原创 2019-07-06 16:51:45 · 270 阅读 · 0 评论