Java集合框架
文章平均质量分 91
惜暮
这个作者很懒,什么都没留下…
展开
-
《Java源码解析》集合框架List之ArrayList
Java的集合框架的底层实现在面试中用的比较多,接下来我就用一些时间来分析一下Java的集合框架中的List(ArrayList,LinkedList),Set(Set的各种实现类),Map(Hashtable、HashMap、ConcurrentHashMap)对于集合框架我们的关注点一般在一下几点: 1. 集合底层实现的数据结构是什么? 2. 集合中元素是否允许为空? 3. 是否允许重复的数据? 4.原创 2016-12-20 09:47:58 · 1070 阅读 · 1 评论 -
《Java源码解析》TreeMap
红黑树顾名思义就是节点是红色或者黑色的平衡二叉树,它通过颜色的约束来维持着二叉树的平衡。对于一棵有效的红黑树二叉树而言我们必须增加如下规则: 1、每个节点都只能是红色或者黑色 2、根节点是黑色 3、每个叶节点(NIL节点,空节点)是黑色的。 4、如果一个结点是红的,则它两个子节点都是黑的。也就是说在一条路径上不能出现相邻的两个红色结点。 5、从任一节点到其每个叶子的所有路径都包含相同数目的原创 2017-01-09 19:06:15 · 414 阅读 · 0 评论 -
J.U.C--并发容器类之ConcurrentHashMap
JDK5 提供了多种并发容器类来改进同步容器类的性能。同步容器类将所有对容器的访问操作全部串行化了来实现线程安全,这种方式的代价是严重降低的并发性。当多个线程竞争容器锁时,吞吐量严重降低。 并发容器类的设计是专门针对多线程并发访问设计的。JDK5中新增了ConcurrentHashMap来代替同步且基于散列的Map以及CopyOnWriteArrayList。ConcurrentHash原创 2017-01-07 12:53:57 · 479 阅读 · 0 评论 -
J.U.C--同步容器类Collections
在JDK1.2之前同步容器类包括Vector、HashTable,这两个容器通过内置锁synchronized保证了同步。后面的ArrayList、LinkedList、HashMap、LinkedHashMap等等都不是线程安全的,没有添加同步机制。但是JDK后面的Collections类也提供了这些常见容器类的同步容器类实现:将他们的状态封装起来,并对每个公共方法都进行同步,使得每次只有一个线程原创 2017-01-07 12:07:37 · 626 阅读 · 0 评论 -
为什么千万别用for循环迭代LinkedList
今天晚上7点时候,想着每天的8点健身还早,突然想起来以前的一个知识点说千万别用for循环迭代LinkedList,效率奇低,今天就想着来写个测试例子并分析原理:代码测试与现象哈哈哈,首先还是先上源码:package collection;import java.util.ArrayList;import java.util.Iterator;import java.util.LinkedLis原创 2017-01-06 23:31:51 · 7760 阅读 · 1 评论 -
《Java源码解析》集合框架Set之LinkedHashSet
《Java源码分析》:LinkedHashSet上篇博文对HashSet的源码进行了分析,这篇博文就是对LinkedHashSet进行一个分析。HashSet是借助于HashMap来进行实现的,而LinkedHashSet是基于LinkedHashMap进行实现的。LinkedHashSet的继承体系LinkedHashSet是继承HashSet类,并实现了Set接口。因此具有HashSet类的一切转载 2016-12-25 13:00:28 · 419 阅读 · 0 评论 -
《Java源码解析》集合框架Set之HashSet
《Java源码分析》:HashSet前面几篇把Map、List相关的的几个类看了下,当然Set接口相关的类也相当的重要,我们也用的比较多,因此,我们也需要了解下Set接口的两个实现类HashSet、TreeSet的源码。这篇博文是记录HashSet的源码分析。下篇博文就来记录TreeSet的源码分析。 说明:我们都知道HashSet集合是不允许重复元素的,因此这个类的利用什么来保证这个集合里面不转载 2016-12-25 12:56:19 · 508 阅读 · 0 评论 -
《Java源码解析》集合框架Map之LinkedHashMap
2016-12-24 16:01 以前都没有贴出来运行环境,今天加上OS和JDK版本,因为发现不同版本实现源码有些许差别: OS : MacOS 10.11 JDK: jdk1.7-72LinkedHashMap1. 还是先看看LinkedHashMap类继承结构图首先说说我对这个类名的理解,其实我觉得就是LinkedList+HashMap特性的集合。LinkedHashM原创 2016-12-24 15:21:18 · 619 阅读 · 0 评论 -
《Java源码解析》集合框架Map之HashTable
时间:2016-12-24 11:01 >今天是2017届研究生入学考试第一天,虽然已经与我没什么关系,但还是会想去去年入学考试的今天,往事已随风逝去,具体的2016生活与技术的总结还是写一个专门的博客吧。难得的周六,难得的早起,陪着2017的考生一起吧,所以也早起写了一片博客,时间也差不多刚刚好吧,算是提前交卷了。Hashtable类的实现也是基于“数组和链表”来实现的,这个HashMap是一样的。原创 2016-12-24 11:01:42 · 491 阅读 · 0 评论 -
《Java源码解析》集合框架Map之HashMap
前面的几篇博客分析了List的两种实现ArrayList和LinkedList实现的源码,接下来就是分析Map的几个实现,下面首先分析Map的实现之一 HashMapHashMap还是老规矩,先看HashMap的继承体系:1. HashMap的继承体系HashMap主要是继承自AbstractMap,实现了Cloneable和Serializable接口使得HashMap具有克隆和序列化的功原创 2016-12-23 14:05:47 · 590 阅读 · 0 评论 -
Java的ArrayList和LinkedList的对比
LinkedList和ArrayList的对比老生常谈的问题了,顺便在这里就把LinkedList的优缺点也给讲了。 1. 顺序插入速度ArrayList会比较快,因为ArrayList是基于数组实现的,数组是事先new好的,只要往指定位置塞一个数据就好了;LinkedList则不同,每次顺序插入的时候LinkedList将new一个对象出来,如果对象比较大,那么new的时间势必会长一点,再加上一转载 2016-12-22 15:16:03 · 1326 阅读 · 0 评论 -
《Java源码解析》集合框架List之LinkedList
LinkedList1.首先看看 LinkedList 的继承体系的结构LinkedList主要是继承自AbstractSequentialList抽象类并实现了List接口、实现了Cloneable和Serializable接口使得ArrayList具有克隆和序列化的功能、实现了Deque接口和Queue因此具有队列的性质。2.重要属性LinkedList的内部是基于双向链表实现的,对于每一个元素原创 2016-12-21 19:37:49 · 570 阅读 · 0 评论 -
PriorityQueue 原理与应用
深入理解 PriorityQueue 优先队列最近在使用DelayQueue时候,发现其底层是基于PriorityQueue实现的,接着这个机会深入分析一下优先队列的实现原理,方便以后在最适合的地方应用。 本文主要的结构分为以下几点: 1)PriorityQueue的类继承关系 2)PriorityQueue的核心数据结构以及数据结构实现原理 3)PriorityQueue的核原创 2017-11-13 16:29:13 · 4359 阅读 · 0 评论