
java集合
with_dream
这个作者很懒,什么都没留下…
展开
-
java集合框架总览
Collection接口是集合类的根接口,只有基本的增加、删除等经过高度抽象的方法。Java中没有提供这个接口的直接的实现类。 Collection有三个子类 分别是Set、List、Queue。 Set中不能包含重复的元素。 List是一个有序的集合,可以包含重复的元素,提供了按索引访问的方式。 Queue是队列形式的接口 Map,以键值对的形式存储数据所有的集合类,都实现了Iterat原创 2017-08-25 23:24:59 · 224 阅读 · 0 评论 -
PriorityBlockingQueue
1、简介1.1 介绍基于优先级堆的无限优先级queue 。 优先级队列的元素根据它们的有序natural ordering ,或由一个Comparator在队列构造的时候提供,这取决于所使用的构造方法。 优先队列不允许null元素。1.2 构造//创建一个PriorityBlockingQueue ,具有默认的初始容量(11),根据它们的自然排序对其元素进行排序 。PriorityBlocking原创 2017-08-31 23:46:03 · 257 阅读 · 0 评论 -
ConcurrentHashMap--未完成
2、源代码public class ConcurrentHashMap<K,V> extends AbstractMap<K,V> implements ConcurrentMap<K,V>, Serializable { //容器最大长度 private static final int MAXIMUM_CAPACITY = 1 << 30; //默认长度原创 2017-08-31 00:21:10 · 186 阅读 · 0 评论 -
ArrayBlockingQueue
1、简介1.1 介绍一个有限的blocking queue由数组支持。 这个队列排列元素FIFO(先进先出)。 队列的头部是队列中最长的元素。 队列的尾部是队列中最短时间的元素。 新元素插入队列的尾部,队列检索操作获取队列头部的元素。 这是一个经典的“有界缓冲区”,其中固定大小的数组保存由生产者插入的元素并由消费者提取。 创建后,容量无法更改。 尝试put成满的队列的元件将导致在操作阻挡; 尝试t原创 2017-08-31 21:39:13 · 199 阅读 · 0 评论 -
HashSet
1、简介HashSet是基于HashMap的key实现,元素由hash表支持,不保证元素的顺序。1.2 继承关系java.lang.Object java.util.AbstractCollection<E> java.util.AbstractSet<E> java.util.HashSet<E>1.3 构造函数//构造一个新的空集合; 背景Hash原创 2017-08-31 18:52:21 · 240 阅读 · 0 评论 -
LinkedHashMap
1、简介1.1 介绍哈希表和链表实现的Map接口,具有可预测的迭代次序。 这种实现不同于HashMap,它维持于所有条目的运行双向链表。 此链接列表定义迭代排序,通常是将键插入到Map(插入顺序 )中的顺序 。1.2 构造//构造具有默认初始容量(16)和负载因子(0.75)LinkedHashMap()//构造具有指定初始容量和默认负载因子(0.75)LinkedHashMap(int in原创 2017-08-31 18:22:44 · 265 阅读 · 0 评论 -
java Arrays/Collections
封装了对数组操作的类,主要方法有:1.1 asList//将数组转化为Liststatic <T> List<T> asList(T... a)1.2 binarySearch//在数组中查找key,使用的是二分查找.成功返回下标,失败返回负数static int binarySearch(byte[] a, byte key)//在指定范围内查找keystatic int binar原创 2017-09-09 09:38:17 · 268 阅读 · 0 评论 -
HashMap
1、HashMap简介HashMap 的是一个散列表,它存储的内容是键值对(key-value)映射。 HashMap 继承于AbstractMap,实现了Map、Cloneable、java.io.Serializable接口。 HashMap 的实现不是同步的,这意味着它不是线程安全的。它的key、value都可以为null。此外,HashMap中的映射不是有序的。1.2 构造函数HashM原创 2017-08-29 02:01:35 · 562 阅读 · 0 评论 -
WeakHashMap
1、简介1.1 介绍WeakHashMap 继承于AbstractMap,实现了Map接口。和HashMap一样,WeakHashMap 也是一个散列表,它存储的内容也是键值对(key-value)映射,而且键和值都可以是null。不过WeakHashMap的键是“弱键”。在 WeakHashMap 中,当某个键不再正常使用时,会被从WeakHashMap中被自动移除。更精确地说,对于一个给定的原创 2017-08-30 21:50:02 · 190 阅读 · 0 评论 -
TreeMap
1、简介1.1 TreeMap 简介TreeMap 是一个有序的key-value集合,它是通过红黑树实现的。 TreeMap 继承于AbstractMap,所以它是一个Map,即一个key-value集合。 TreeMap 实现了NavigableMap接口,意味着它支持一系列的导航方法。比如返回有序的key集合。 TreeMap基于红黑树(Red-Black tree)实现。该映射根据其键原创 2017-08-30 13:35:14 · 1590 阅读 · 0 评论 -
Hashtable
1、Hashtable 简介1.1 介绍和HashMap一样,Hashtable 也是一个散列表,它存储的内容是键值对(key-value)映射。 Hashtable 继承于Dictionary,实现了Map、Cloneable、java.io.Serializable接口。 Hashtable 的函数都是同步的,这意味着它是线程安全的。它的key、value都不可以为null。此外,Hasht原创 2017-08-29 17:52:08 · 284 阅读 · 0 评论 -
LinkedList
1、LinkedList简介LinkedList 是一个继承于AbstractSequentialList的双向链表。它也可以被当作堆栈、队列或双端队列进行操作。 LinkedList 实现 List 接口,能对它进行队列操作。 LinkedList 实现 Deque 接口,即能将LinkedList当作双端队列使用。 LinkedList 实现了Cloneable接口,即覆盖了函数clone原创 2017-08-27 17:15:14 · 665 阅读 · 0 评论 -
CopyOnWriteArrayList
1、简介1.1 写时复制写时复制是指:在并发访问的情景下,当需要修改元素时,不直接修改该容器,而是先复制一份副本,在副本上进行修改。修改完成之后,将指向原来容器的引用指向新的容器(副本容器)。1.2 写时复制带来的影响1 由于不会修改原始容器,只修改副本容器。因此,可以对原始容器进行并发地读。其次,实现了读操作与写操作的分离,读操作发生在原始容器上,写操作发生在副本容器上。 2 数据一致性问题:读原创 2017-08-27 15:12:53 · 701 阅读 · 1 评论 -
Stack
1、Stack简介Stack是栈。它的特性是:先进后出(FILO, First In Last Out)。java工具包中的Stack是继承于Vector(矢量队列)的,由于Vector是通过数组实现的,这就意味着,Stack也是通过数组实现的,而非链表。当然,我们也可以将LinkedList当作栈来使用1.2 Stack的继承关系java.lang.Object↳ java.util.A原创 2017-08-27 00:19:42 · 362 阅读 · 0 评论 -
Vector
1、Vector简介Vector 是矢量队列,它是JDK1.0版本添加的类。继承于AbstractList,实现了List, RandomAccess, Cloneable这些接口。 Vector 继承了AbstractList,实现了List;所以,它是一个队列,支持相关的添加、删除、修改、遍历等功能。 Vector 实现了RandmoAccess接口,即提供了随机访问功能。RandmoAcc原创 2017-08-26 23:29:50 · 211 阅读 · 0 评论 -
ArrayList
1、基础ArrayList简介ArrayList 是一个数组队列,相当于 动态数组。与Java中的数组相比,它的容量能动态增长。它继承于AbstractList,实现了List, RandomAccess, Cloneable, java.io.Serializable这些接口。ArrayList 继承了AbstractList,实现了List。它是一个数组队列,提供了相关的添加、删除、修改、遍历等原创 2017-08-26 22:32:53 · 258 阅读 · 0 评论 -
ConcurrentLinkedDeque--未完成
1、简介1.1 介绍基于链接节点的无界并发deque 。 并发插入,删除和访问操作可以跨多个线程安全执行。 A ConcurrentLinkedDeque是许多线程将共享对公共集合的访问的适当选择。 像大多数其他并发集合实现一样,此类不允许使用null元素。 这是一个双向链表 size方法不是一个准确的操作1.2 构造//构造一个空的构造。ConcurrentLinkedDeque()//构原创 2017-09-01 15:49:57 · 744 阅读 · 0 评论