Java-Collection集合
军伟@
Java开发工程师
展开
-
Java集合之Collection
Java集合是java提供的工具包,包含了常用的数据结构:集合、链表、队列、栈、数组、映射等。Java集合工具包位置是java.util.*Java集合主要可以划分为4个部分:List列表、Set集合、Map映射、工具类(Iterator迭代器、Enumeration枚举类、Arrays和Collections)。Java集合框架如下图: 由上图可以看到Java框架主要是C原创 2015-08-26 00:16:19 · 2012 阅读 · 1 评论 -
Java集合之LinkedList
LinkedList是一个继承AbstractSequentialList的双向链表,它也可以被当做堆栈、队列或者双端队列进行操作。LinkedList实现了List接口,能对它进行队列操作。LinkedList实现了Seque接口,能将LinkedList当做双端队列进行使原创 2015-08-28 00:16:29 · 1747 阅读 · 0 评论 -
HashMap和有序LinkedHashMap实现对比
LinkedHashMap:LinkedHashMap简单来说是一个有序的HashMap,其是HashMap的子类,HashMap是无序的。接下来我们通过对比分析HashMap和LinkedHashMap来了解一下LinkedHashMap是如何实现有序的。首先HashMap及子类LinkedHashMap都提供了一个数组。 Node[] table 不同key的hash值是分布在这个数组中的原创 2017-07-05 12:29:51 · 25799 阅读 · 4 评论 -
Java集合之ConcurrentHashMap实现原理
ConcurrentHashMap是Java1.5中引用的一个线程安全的支持高并发的HashMap集合类。这篇文章总结了ConcurrentHashMap的内部实现原理,是对于自己理解后的一些整理。1.HashTable与ConcurrentHashMap的对比HashTable本身是线程安全的,写过Java程序的都知道通过加Synchronized关键字实现线程安全,这样对整张表加锁实现同步的一转载 2017-07-06 11:00:21 · 1253 阅读 · 0 评论 -
Java集合--JDK 1.8 ConcurrentHashMap 源码剖析
第一篇:前言HashMap是我们平时开发过程中用的比较多的集合,但它是非线程安全的,在涉及到多线程并发的情况,进行put操作有可能会引起死循环,导致CPU利用率接近100%。final HashMap map = new HashMap(2); for (int i = 0; i 10000; i++) { new Thread(new Runnable() { @O转载 2017-07-06 11:19:19 · 1721 阅读 · 1 评论 -
Java-collections总结
纸上得来终觉浅,绝知此事要躬行 --陆游 问渠那得清如许,为有源头活水来 --朱熹类Collections是一个包装类。它包含有各种有关集合操作的静态多态方法。此类不能实例化,就像一个工具类,服务于Java的Collection框架。java.lang.Object java.util.CollectionsCollectio原创 2015-08-27 08:57:45 · 18337 阅读 · 2 评论 -
Java-Iterator总结
纸上得来终觉浅,绝知此事要躬行 --陆游 问渠那得清如许,为有源头活水来 --朱熹迭 代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。在Collection集合中都会实现terator,因此可以通过iterator()函数获得一个iterator对象,然后就可原创 2015-08-27 08:59:39 · 5053 阅读 · 0 评论 -
Java-Enumeration总结
Enumeration(枚举)接口的作用和Iterator类似,只提供了遍历Vector和HashTable类型集合元素的功能,不支持元素的移除操作。Java8中Enumeration接口的源码:public interface EnumerationE> {/**原创 2015-08-27 09:01:22 · 42430 阅读 · 0 评论 -
Java集合--CopyOnWriteArraySet
它是线程安全的无序的集合,可以将它理解成线程安全的HashSet。有意思的是,CopyOnWriteArraySet和HashSet虽然都继承于共同的父类AbstractSet;但是,HashSet是通过“散列表(HashMap)”实现的,而CopyOnWriteArraySet则是通过“动态数组(CopyOnWriteArrayList)”实现的,并不是散列表。和CopyOnWriteArr...原创 2017-07-20 23:00:16 · 1357 阅读 · 0 评论 -
Java集合--CopyOnWriteArrayList
CopyOnWriteArrayList相当于线程安全的ArrayList。和ArrayList一样,它是个可变数组;但是和ArrayList不同的时,它具有以下特性:1. 它最适合于具有以下特征的应用程序:List 大小通常保持很小,只读操作远多于可变操作,需要在遍历期间防止线程间的冲突。2. 它是线程安全的。3. 因为通常需要复制整个基础数组,所以可变操作(add()、set() 和 r...原创 2017-07-19 14:25:19 · 774 阅读 · 0 评论 -
Java集合之ArrayList
ArrayList简介:ArrayList是一个数组队列,相当于一个动态的数组,容量可以动态的增长;它继承了AbstractList并实现了List,RandomAccess,Cloneable、Serializable这些接口。特性:(1)ArrayList继承了Abs原创 2015-08-28 00:14:56 · 1874 阅读 · 0 评论 -
Java集合之Vector
Vector是矢量队列,它继承了AbstractList,实现了List、 RandomAccess, Cloneable, java.io.Serializable接口。Vector接口依赖图:Vector继承了AbstractList,实现了List,它是一个队列,因此实现了相应的添加、删除、修改、遍历等功能。Vector实现了RandomAccess接口,因此可以随机访问原创 2015-08-28 00:18:16 · 21156 阅读 · 3 评论 -
Java集合之Stack
纸上得来终觉浅,绝知此事要躬行 --陆游 问渠那得清如许,为有源头活水来 --朱熹Stack是栈,特性是先进后出(FILO,First In Last Out)。Stack是继承于Vector(矢量队列),由于Vector是同数组实现的,Stack也是通过数组而非链表。Stack和Collection关系如下:Stack示例代码:原创 2015-08-28 00:21:17 · 2416 阅读 · 0 评论 -
Java集合之List
List继承自Collection的接口,List也是集合的一种。List是有序队列,List中的没一个元素都会有一个索引,第一个元素的索引是0,往后的元素的索引值依次+1,List中允许有重复的元素。List接口源码:public interface ListE> extends CollectionE> { int size();//大小 boolean isEmp原创 2015-08-26 00:18:55 · 1680 阅读 · 0 评论 -
Java集合之Set
Set也是继承自Collection,set也是集合的一种,同时set不允许重复的元素存在。Set源码:public interface SetE> extends CollectionE> { int size(); //大小 boolean isEmpty();//是否为空 boolean contains(Object o); //是否包含某个对象原创 2015-08-26 00:20:36 · 2837 阅读 · 0 评论 -
Java集合之TreeSet
TreeSet是一个有序的集合,它的作用是提供有序的Set集合。它继承了AbstractSet抽象类,实现了NavigableSet,Cloneable,Serializable接口。TreeSet是基于TreeMap实现的,TreeSet的元素支持2种排序方式:自然排序或者根据提供的Comparator进行排序。TreeSet的接口依赖图:从图中可以看出:(1)T原创 2015-08-30 00:25:43 · 3281 阅读 · 3 评论 -
Java集合之HashSet
HashSet是一个没有重复元素的集合,HashSet是由HashMap实现的,不保证元素的顺序,并且HashSet允许使用null元素。HashSet不是线程安全的,当多个线程同时访问HashSet时,会出现问题,解决的方法是通过对自然封装该Set的对象执行同步操作来完成的。还可以使用Collections.synchronizedSet方法来包装set。Set s=Collectins.s原创 2015-08-30 00:16:17 · 3117 阅读 · 3 评论 -
Java集合之WeakHashMap
WeakHashMap继承于AbstractMap,同时实现了Map接口。和HashMap一样,WeakHashMap也是一个散列表,存储的内容也是键值对 key-value映射,并且键和值都可以是null。WeakHashMap的键都是弱键,给定一个键,其映射的存在并不阻止垃圾回收器对该键的丢弃,使该键成为可终止,然后被回收。弱键的原理就是Entry继承了WeakReference接口,当G原创 2015-08-29 00:32:16 · 2055 阅读 · 0 评论 -
Java集合之Hashtable
纸上得来终觉浅,绝知此事要躬行 --陆游 问渠那得清如许,为有源头活水来 --朱熹和HashMap一样,Hashtable也是一个散列表,存储的内容也是键值对key-value映射。它继承了Dictionary,并实现了Map、Cloneable、io、Serializable接口。Hashtable是线程安全的,并且key和value不能为空,并且不是有序的。H原创 2015-08-29 00:27:03 · 1847 阅读 · 0 评论 -
Java集合之TreeMap
纸上得来终觉浅,绝知此事要躬行 --陆游 问渠那得清如许,为有源头活水来 --朱熹TreeMap与Map的关系如下图:TreeMap介绍:(1)TreeMap是一个有序的key-value集合,是通过红黑树来实现的。(2)TreeMap是继承于AbstractMap,所以他是一个Map,是一个key-value集合。(3)TreeMap实现原创 2015-08-29 00:19:21 · 6836 阅读 · 2 评论 -
Java集合之HashMap
纸上得来终觉浅,绝知此事要躬行 --陆游 问渠那得清如许,为有源头活水来 --朱熹HashMap是一个散列表,存储的内容是键值对(key-value)映射。HashMap继承于AbstractMap并实现了Map、Cloneable、Serializable接口。(1)HashMap不是线程安全的,同时key-value都可以为null,并且是无序的。(2)H原创 2015-08-29 00:08:10 · 2602 阅读 · 2 评论 -
Java集合之Map
Map架构:如上图:(1)Map是映射接口,Map中存储的内容是键值对(key-value)(2)AbstractMap是继承于Map的抽象类,实现了Map中的大部分API。(3)SortedMap是继承于Map的接口,SortedMap中的内容是排序的键值对,排序的方法是通过比较器。(4)NavigableMap继承于SortedMap,其中有一系列的导航方法,如原创 2015-08-28 00:22:58 · 2563 阅读 · 0 评论 -
Java集合--ArrayBlockingQueue
ArrayBlockingQueue是数组实现的线程安全的有界的阻塞队列。线程安全是指,ArrayBlockingQueue内部通过“互斥锁”保护竞争资源,实现了多线程对竞争资源的互斥访问。而有界,则是指ArrayBlockingQueue对应的数组是有界限的。 阻塞队列,是指多线程访问竞争资源时,当竞争资源已被某线程获取时,其它要获取该资源的线程需要阻塞等待;而且,ArrayBlockingQ...原创 2017-07-24 22:38:44 · 1003 阅读 · 0 评论