![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java集合类
限量发行x
限量发行
展开
-
深入Java集合学习系列:LinkedList的实现原理
1. LinkedList概述: List 接口的链接列表实现。实现所有可选的列表操作,并且允许所有元素(包括 null)。除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾 get、remove 和 insert 元素提供了统一的命名方法。这些操作允许将链接列表用作堆栈、队列或双端队列。此类实现 Deque 接口,为 add、poll 提供先进先出转载 2016-04-26 17:40:34 · 320 阅读 · 0 评论 -
java集合类深入分析之TreeMap/TreeSet篇
简介 TreeMap和TreeSet算是Java集合类里面比较有难度的数据结构。和普通的HashMap不一样,普通的HashMap元素存取的时间复杂度一般是O(1)的范围。而TreeMap内部对元素的操作复杂度为O(logn)。虽然在元素的存取方面TreeMap并不占优,但是它内部的元素都是排序的,当需要查找某些元素以及顺序输出元素的时候它能够带来比较理想的结果。可以说,TreeMa转载 2016-05-11 16:26:18 · 559 阅读 · 0 评论 -
java集合类深入分析之PriorityQueue
PriorityQueue介绍 在平时的编程工作中似乎很少碰到PriorityQueue(优先队列) ,故很多人一开始看到优先队列的时候还会有点迷惑。优先队列本质上就是一个最小堆。前面一篇文章介绍了堆排序和堆的性质。而堆又是什么呢?它是一个数组,不过满足一个特殊的性质。我们以一种完全二叉树的视角去看这个数组,并用二叉树的上下级关系来映射到数组上面。如果是最大堆,则二叉树的顶点是保存的转载 2016-05-11 16:29:00 · 886 阅读 · 0 评论 -
遍历hashMap、hashSet、Hashtable
一.遍历HashMapMap map = new HashMap(); for(int i=0;i<100;i++) { map.put(i, "123"); }方法一:效率比方法二高for(Entry entry:map.entrySet()) { System.out.println(entry.getKey()+"="+entry.ge原创 2016-05-17 17:40:15 · 422 阅读 · 0 评论 -
Android DiskLruCache完全解析,硬盘缓存的最佳方案
概述记得在很早之前,我有写过一篇文章Android高效加载大图、多图解决方案,有效避免程序OOM,这篇文章是翻译自Android Doc的,其中防止多图OOM的核心解决思路就是使用LruCache技术。但LruCache只是管理了内存中图片的存储与释放,如果图片从内存中被移除的话,那么又需要从网络上重新加载一次图片,这显然非常耗时。对此,Google又提供了一套硬盘缓存的解决方案:Di转载 2016-03-16 19:25:45 · 496 阅读 · 0 评论 -
深度剖析ConcurrentHashMap
还记得大学快毕业的时候要准备找工作了,然后就看各种面试相关的书籍,还记得很多面试书中都说到:HashMap是非线程安全的,HashTable是线程安全的。那个时候没怎么写Java代码,所以根本就没有听说过ConcurrentHashMap,只知道面试的时候就记住这句话就行了…至于为什么是线程安全的,内部怎么实现的,通通不了解。今天我们将深入剖析一个比HashTable性能更转载 2016-09-09 10:17:01 · 444 阅读 · 0 评论 -
深入Java集合学习系列:HashMap的实现原理
1. HashMap概述: HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 2. HashMap的数据结构: 在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本转载 2016-03-16 19:05:50 · 451 阅读 · 0 评论 -
java集合类深入分析之Queue篇
简介 Queue是一种很常见的数据结构类型,在Java里面Queue是一个接口,它只是定义了一个基本的Queue应该有哪些功能规约。实际上有多个Queue的实现,有的是采用线性表实现,有的基于链表实现。还有的适用于多线程的环境。java中具有Queue功能的类主要有如下几个:AbstractQueue, ArrayBlockingQueue, ConcurrentLinkedQu转载 2016-05-11 16:20:19 · 14966 阅读 · 3 评论 -
深入Java集合学习系列:LinkedHashMap的实现原理
1. LinkedHashMap概述: LinkedHashMap是Map接口的哈希表和链接列表实现,具有可预知的迭代顺序。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 LinkedHashMap实现与HashMap的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序转载 2016-03-16 19:02:54 · 296 阅读 · 0 评论 -
Java集合类总结
扩容1.使用位运算计算size//ArrayList首次扩容1.5倍 int newCapacity = oldCapacity + (oldCapacity >> 1); //Hashmap 每次扩容2倍 capacity 2.大部分首次扩容两倍,特列:ArrayList首次扩容1.5倍3.HashMap的默认装载因子为0.754.HashSet是基于Hash原创 2016-06-01 20:47:58 · 346 阅读 · 0 评论 -
java stack的详细实现分析
简介 我们最常用的数据结构之一大概就是stack了。在实际的程序执行,方法调用的过程中都离不开stack。那么,在一个成熟的类库里面,它的实现是怎么样的呢?也许平时我们实践的时候也会尝试着去写一个stack的实现玩玩。这里,我们就仔细的分析一下jdk里的详细实现。Stack 如果我们去查jdk的文档,我们会发现stack是在Java.util这个包里。它对应的一转载 2016-05-11 16:00:53 · 16492 阅读 · 0 评论 -
深入Java集合学习系列:LinkedHashSet的实现原理
1. LinkedHashSet概述: LinkedHashSet是具有可预知迭代顺序的Set接口的哈希表和链接列表实现。此实现与HashSet的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序可为插入顺序或是访问顺序。 注意,此实现不是同步的。如果多个线程同时访问链接的哈希Set,而其中至少一个线程修改了该Set,则它必转载 2016-05-11 15:42:42 · 346 阅读 · 0 评论 -
HashMap与HashTable的对比分析
前言 前一段时间分析Java collection中间一些数据结构代码的时候,单独把HashMap的实现做了一个分析(见链接)。以前看到很多人讨论问题的时候,会把HashMap和HashTable放在一起对比和分析。最开始的时候觉得他们两者的差别很小,网上也有很多浅显的解答。后来结合一些细节分析的时候,发现他们也存在许多细节上的差异,有的也许是针对不同应用的考量,有的也许是由于历史原转载 2016-05-10 17:04:30 · 341 阅读 · 0 评论 -
java collections集合类总结:概述
简介 在java的包java.util和java.util.concurrent里面定义了java的集合类框架。我们大部分日常使用到的数据结构都可以在这里找到一个对应的实现。在以往的学习过程中可能会接触过一些具体的结构。但是对于java集合类框架来说,他里面包含有哪些类别的结构呢?对于不同的结构,他们分别适用于哪些应用场景?集合类框架中这些类之间是否有着某种关系呢?在这里,我们尝试对转载 2016-05-10 10:00:06 · 663 阅读 · 0 评论 -
java集合类深入分析之List篇
简介 在List中最常用的两个类就数ArrayList和LinkedList。他们两个的实现代表着数据结构中的两种种典型:线性表和链表。在这里,这个线性表是可以根据需要自动增长的。Java的库里面默认没有实现单链表,LinkedList实际上是一个双链表。这些具体的细节我们会在后续的代码里分析。 实际上,ArrayList和LinkedList他们之间的整体类关系图如下转载 2016-05-10 10:21:41 · 2968 阅读 · 0 评论 -
java集合类深入分析之HashSet, HashMap篇
简介 Map和Set是比较常用的两种数据结构。我们在平常的编程中经常会用到他们。只是他们的内部实现机制到底是怎么样的呢?了解他们的具体实现对于我们如何有效的去使用他们也是很有帮助的。在这一篇文章里,已经对HashMap, HashSet的实现做了一个详细的讨论。这里主要是针对Map, Set这两种类型的数据结构规约和典型的HashMap,HashSet实现做一个讨论。Ma转载 2016-05-10 17:14:55 · 350 阅读 · 0 评论 -
通过分析 JDK 源代码研究 Hash 存储机制
HashMap 和 HashSet 是 Java Collection Framework 的两个重要成员,其中 HashMap 是 Map 接口的常用实现类,HashSet 是 Set 接口的常用实现类。虽然 HashMap 和 HashSet 实现的接口规范不同,但它们底层的 Hash 存储机制完全一样,甚至 HashSet 本身就采用 HashMap 来实现的。实际上,HashS转载 2016-05-10 18:21:43 · 381 阅读 · 0 评论 -
深入Java集合学习系列:Hashtable的实现原理
我们先对Hashtable有个整体认识,然后再学习它的源码,最后再通过实例来学会使用Hashtable。第1部分 Hashtable介绍第2部分 Hashtable数据结构第3部分 Hashtable源码解析(基于JDK1.6.0_45)第4部分 Hashtable遍历方式第5部分 Hashtable示例转载请注明出处:http://www.cnblogs.com/转载 2016-05-11 15:39:59 · 668 阅读 · 0 评论 -
深入Java集合学习系列:HashSet的实现原理
1. HashSet概述: HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。 2. HashSet的实现: 对于HashSet而言,它是基于HashMap实现的,HashSet底层使用HashMap来保存所有元素,因此HashSet转载 2016-05-11 15:41:37 · 257 阅读 · 0 评论 -
【源码】LinkedHashMap源码剖析
注:以下源码基于jdk1.7.0_11之前的两篇文章通过源码分析了两种常见的Map集合,HashMap和Hashtable。本文将继续介绍另一种Map集合——LinkedHashMap。顾名思义,LinkedHashMap除了是一个HashMap之外,还带有LinkedList的特点,也就是说能够保持遍历的顺序和插入的顺序一致,那么它是怎么做到的呢?下面我们开始分析。首先...转载 2016-07-24 21:54:40 · 342 阅读 · 0 评论