
集合源码学习
6点A君
记录我学习的知识的地方~
展开
-
集合源码学习(七):HashMap(Java8)
Java8中,新加了很多新特性,特别是集合,分割迭代器,Stream,Functional Interface等等,Java8中的HashMap也和以往的实现略有不同。 这些天看了好久的HashMap,理清了HashMap的结构以及实现原理,听我慢慢分析。HashMap是什么?/** * 基于Map接口实现,允许null值和null键。 * HashMap和HashTable很相似,只是Ha原创 2017-10-15 21:35:13 · 1220 阅读 · 0 评论 -
集合源码学习(十):HashTable(Java8)与HashMap比较
什么是HashTable一句话介绍,一个里面方法大部分都是线程安全的集合,类似于HashMap。也是通过一个数组,利用hash函数,如果冲突就用链表进行连接。 具体如下图: 当然这只是一句话简短介绍,面试的时候,经常会被问到, HashTable和HashMap有什么区别? 经常的回答就是,HashTable是线程安全,里面方法大部分是synchronized,而HashMap不是;原创 2017-10-20 19:02:19 · 452 阅读 · 0 评论 -
集合源码学习(九):WeakHashMap(Java8)关于key
什么是WeakHashMap?WeakHashMap是以及基于java弱引用实现的HashMap,感觉一句话就讲的差不多了嘿嘿。 先看看它的定义:public class WeakHashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>如上,在定义方面和HashMap并没有什么不同。而且在结构上,基本和HashMap一致。在原创 2017-10-17 23:37:03 · 512 阅读 · 0 评论 -
集合源码学习(八):HashSet和TreeSet
何为Set?Set定义如下:public interface Set<E> extends Collection<E>如上代码,在Set只是简单的继承自Collection,但是在jdk代码解释中表明Set集合有以下特征。只有一个元素不允许重复在Java中,Set集合的典型实现有HashSet和TreeSet,他们分别是基于HashMap和TreeMap实现的,关于这两个的分析,可以看我写过的原创 2017-10-17 00:13:22 · 371 阅读 · 0 评论 -
集合源码学习(六):TreeMap
从这篇博客开始,慢慢一起学习Map集合什么是Map?Map和List不同, 在List中,我们记得主要是线性表,List中又可以细分为基于数组实现(ArrayList,Vector, ..),基于链表实现(LinkedList, …)。并且主要是List只有value,即只有一个值。 而在Map中 ,存储的是一个键值对 组合,即key-value。基本操作都是作用于这个组合。 看Map接口的实原创 2017-10-14 12:41:08 · 654 阅读 · 0 评论 -
Java8中Stream基本用法
关于Stream并发网这篇文章写的不错,适合基础入门:Strem 基本应用 等再多接触深入再去了解源码实现~转载 2017-10-10 20:21:53 · 475 阅读 · 0 评论 -
集合源码学习(五):LinkedList
何为LinkedList?LinkedList本身是一个,由Java中的链表思想的数据结构对象,类似于链表,而在Java里面,没有指针,是通过引用来连接的。是一个链表,同时也实现了队列和栈的操作。另外,它也是可以随机访问的,只是和前两篇的ArrayList不同,它的随机访问是通过遍历从而获取特定元素的。接下来从特定方面来讲。定义头:/** * * 基于双向链表实现,允许所有元素包括null原创 2017-10-12 23:40:21 · 627 阅读 · 0 评论 -
集合源码学习(三):ArrayList
Java集合里面最简单的估计就是ArrayList了,当然在我刚接触Java时,甚至接触相当一段时间,我都不知道ArrayList原理的。这两天把ArrayList源码仔细读了一遍,感觉如果把注释完的代码贴出来还不如直接看jdk文档。我把一些核心的地方找出来,下面将从以下几个方面来学习ArrayList。什么是ArrayList?其实ArrayList里面的数据结构知识就是线性表的应用。关于modC原创 2017-10-11 00:09:04 · 500 阅读 · 0 评论 -
集合源码学习(四):Vector
Vector是什么?Vector是一个集合,和在实现结构上和ArrayList很相似,包括增加,修改,删除等等操作,和ArrayList实现算法均一致。所以本篇博文不再像前一篇文章集合源码学习(三):ArrayList 般介绍具体实现类型方方面面。所以想继续了解Vector源码读者可以先看ArrayList这篇,再来读这篇就可以了。 而与ArrayList的最大不同点,就是Vector里面的方法都原创 2017-10-11 23:18:09 · 355 阅读 · 0 评论 -
Java8的Function接口学习(compose和andThen)
Java8增加了函数式编程这一新特性,我这几天也在慢慢学习,现在就来讲讲Function接口。何为Function接口?在java8以后的接口可以有接口方法的默认实现了,如下所示,Function接口主要代码及个人整理注释:/** * 代表这一个方法,能够接受参数,并且返回一个结果 * @since 1.8 */@FunctionalInterfacepublic interface Fu原创 2017-10-10 13:16:02 · 9744 阅读 · 1 评论 -
集合源码学习(二):Spliterator
何为Spliterator?Java8新增加了Spliterator类,和以前的Iterator迭代器相比,Spliterator又被称为分割迭代器,即可以支持不同位置访问方式迭代,即并行的方式进行迭代。 先看注解后的代码:public interface Spliterator<T> { /** * 执行一个元素的操作,也就是action里面的操作,如果有元素则返回true原创 2017-10-09 19:20:44 · 871 阅读 · 0 评论 -
集合源码学习(一):Collection
集合源码学习(一):Collection首先来说说Collection,它是集合的接口,代表着就是一个集合,可以往里面装东西,装各种物品等。定义头它的定义头如下:public interface Collection<E> extends Iterable<E>介绍Iterable接口定义头:public interface Iterable<T>构造方法:/*返回当前类的遍历器(iterator)原创 2017-10-09 10:08:42 · 692 阅读 · 0 评论 -
集合源码学习(十一):LinkedHashMap
何为LinkedHashMapLinkedHashMap是一个,具有顺序的HashMap,也就是使用Iterator进行迭代时,顺序与put进来的顺序是一致的。 先看LinkedHashMap的定义:public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V>如上,LinkedHashMap继承自H原创 2017-10-20 20:24:13 · 532 阅读 · 0 评论