Java集合容器相关技术
Java集合容器相关
朱小厮
你知道的越多 你不知道的也就越多
展开
-
Java7/8 中的 HashMap 和 ConcurrentHashMap 全解析
网上关于 HashMap 和 ConcurrentHashMap 的文章确实不少,不过缺斤少两的文章比较多,所以才想自己也写一篇,把细节说清楚说透,尤其像 Java8 中的 ConcurrentHashMap,大部分文章都说不清楚。终归是希望能降低大家学习的成本,不希望大家到处找各种不是很靠谱的文章,看完一篇又一篇,可是还是模模糊糊。阅读建议:四节基本上可以进行独立阅读,建议初学者可按照 Jav...转载 2018-11-16 01:54:44 · 9737 阅读 · 9 评论 -
Java集合框架:Collections工具类
java.util.Collections工具类提供很多有用的方法,使得程序猿操作集合类的时候更加的方便容易,这些方法都是静态的。整个Collections工具类源码差不多有4000行,我们针对一些典型的方法进行阐述。1. 调用一个空List,Set,Mappublic static final List EMPTY_LIST = new EmptyList<>();public static f原创 2016-03-18 16:44:16 · 10731 阅读 · 1 评论 -
Java集合框架:Arrays工具类
java.util.Arrays类能方便地操作数组,它提供的方法都是静态的。整个Arrays工具类的实现有3000+行,但是归纳总结一下可知它有以下功能(9个):1. asList定义: @SafeVarargs public static &lt;T&gt; List&lt;T&gt; asList(T... a) { return new ArrayList&lt;&gt;原创 2016-03-18 16:34:48 · 7001 阅读 · 0 评论 -
Java集合框架:Set(HashSet,LinkedHashSet,TreeSet)
Set概述 Set几乎都是内部用一个Map来实现, 因为Map里的KeySet就是一个Set,而value是假值,全部使用同一个Object。Set的特征也继承了那些内部Map实现的特征。HashSet1. 定义package java.util;public class HashSet&amp;amp;lt;E&amp;amp;gt; extends AbstractSet&amp;amp;lt;E&amp;amp;gt;原创 2016-03-17 21:37:57 · 4601 阅读 · 3 评论 -
Java集合框架:LinkedList
LinkedList以双向链表实现,允许重复。(如下Node的实现)并保留头指针和尾指针。链表无容量限制,但双向链表本身使用了更多空间,也需要额外的链表指针操作。按下标访问元素—get(i)/set(i,e) 要悲剧的遍历链表将指针移动到位(如果i>数组大小的一半,会从末尾移起)。插入、删除元素时修改前后节点的指针即可,但还是要遍历部分链表的指针才能移动到下标所指的位置,只有在链表两头的操作—add(), addFi原创 2016-03-17 20:13:57 · 4214 阅读 · 2 评论 -
Java集合框架:ArrayList
&amp;emsp;&amp;emsp;**ArrayList以数组实现,允许重复。超出限制时会增加50%的容量(grow()方法中实现,如下所示),每次扩容都底层采用System.arrayCopy()复制到新的数组,因此最好能给出数组大小的预估值。默认第一次插入元素时创建数组的大小为10.**原创 2016-03-17 20:08:01 · 5204 阅读 · 8 评论 -
Java集合框架:EnumMap
EnumMap的key不允许为null,value可以为null,按照key在enum中的顺序进行保存,非线程安全。可以用工具类Collections进行包装成线程安全的:```Map<EnumKey, V> m = Collections.synchronizedMap(new EnumMap<EnumKey, V> java.io.Serializable, Cloneable原创 2016-03-17 19:59:15 · 14998 阅读 · 1 评论 -
Java集合框架:WeakHashMap
&emsp;&emsp;WeakHashMap实现了Map接口,是HashMap的一种实现,它比HashMap多了一个引用队列:```private final ReferenceQueue<Object> queue = new ReferenceQueue<>();```&emsp;&emsp;博主认真比对过WeakHashMap和HashMap的源码,发现WeakHa原创 2016-03-17 19:48:56 · 9336 阅读 · 2 评论 -
Java集合框架:TreeMap
&emsp;&emsp;TreeMap继承AbstractMap,实现NavigableMap、Cloneable、Serializable三个接口。其中AbstractMap表明TreeMap为一个Map即支持key-value的集合, NavigableMap则意味着它支持一系列的导航方法,具备针对给定搜索目标返回最接近匹配项的导航方法 。原创 2016-03-17 19:38:29 · 3815 阅读 · 8 评论 -
Java集合框架:LinkedHashMap
如无特殊说明,本文以jdk7为准进行说明。package java.util;import java.io.*;public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V>{} 可以看到LinkedHashMap继承了HashMap,那么LinkedHashMap又有什么特点呢? Lin原创 2016-03-17 17:42:51 · 4585 阅读 · 4 评论 -
Java集合框架:HashMap
Java集合框架概述 Java集合框架无论是在工作、学习、面试中都会经常涉及到,相信各位也并不陌生,其强大也不用多说,博主最近翻阅java集合框架的源码以及搜索一些相关资料整理出Java集合框架的系列。一方面是做一个总结,方便以后查阅,另一方面希望各位小伙伴能够提出不足之处,我会及时更新修改。 博主从网上抠了一张图,觉得画得还是比较形象的,给大家参考一下。 上述类图中,实线边框的是原创 2016-03-17 12:55:29 · 9621 阅读 · 22 评论 -
Java引用类型
博主最近在整理Java集合框架时,在整理到WeakHashMap的时候,觉得有必要先阐述一下Java的引用类型,故此先整理的这篇文章,希望各位多提提意见。 闲话不多说,直接进入主题。Java中提供了4个级别的引用:强引用、软引用、弱引用和虚引用。这四个引用定义在java.lang.ref的包下。 强引用( Final Reference) 就是指在程序代码中普遍存在的,类似O原创 2016-03-16 19:12:55 · 10458 阅读 · 6 评论 -
Comparable与Comparator浅析
今天博主在翻阅TreeMap的源码,发现其键必须是实现Comparable或者Comparator的接口时产生了一些兴趣,比如在TreeMap中的put方法分别对Comparable和Comparator接口分别进行处理。那么疑问就来了,Comparable和Comparator接口的区别是什么,Java中为什么会存在两个类似的接口? Comparable和Comparator接口都是用...原创 2016-03-15 19:56:41 · 26170 阅读 · 31 评论