Java集合工具包位于Java.util包下,包含了很多常用的数据结构,如数组、链表、栈、队列、集合、哈希表等。学习Java集合框架下大致可以分为如下五个部分:List列表、Set集合、Map映射、迭代器(Iterator、Enumeration)、工具类(Arrays、Collections)。 ...
分类:
编程语言 时间:
2016-06-29 18:35:31
阅读次数:
193
数据结构中有数组和链表来实现对数据的存储,这两者有不同的应用场景,数组的特点是:寻址容易,插入和删除困难;链表的特点是:寻址困难,插入和删除容易;哈希表的实现结合了这两点,哈希表的实现方式有多种,在HashMap中使用的是链地址法,也就是拉链法。看下面这张流传很广的图, 拉链法实际上是一种链表数组的
分类:
编程语言 时间:
2016-03-16 20:51:14
阅读次数:
247
前面学习了ArrayList的源码,数组是顺序存储结构,存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1),数组的特点是寻址容易,插入和删除困难。今天学习另外的一种常用数据结构LinkedList的实现,LinkedList使用链表作为存储结构,链表是线性存储
分类:
编程语言 时间:
2016-03-15 23:13:49
阅读次数:
290
ArrayList直接继承AbstractList,实现了List、 RandomAccess、Cloneable、Serializable接口,为什么叫"ArrayList",因为ArrayList内部是用一个数组存储元素值,相当于一个可变大小的数组,也就是动态数组。 (1)继承和实现继承了Abs
分类:
编程语言 时间:
2016-03-15 18:59:43
阅读次数:
268
概述:
ConcurrentHashMap是HashMap的升级版,我们都知道HashMap是不可靠的,线程不安全的,而Hashtable在同步的时候又会将整张表都锁住,从而在多并发的情况下效率低下。于是ConcurrentHashMap出现了,综合了两者的优点,所以一直是高并发情况下开发者的首选,但是相对的,它也有自身的一些不足,我们来分析一下它的原理。
ConcurrentHash...
分类:
其他好文 时间:
2015-08-14 22:48:47
阅读次数:
173
为了分析ConcurrentHashMap,决定先分析一下Hashtable,两者都是线程安全的,必然会有不同的区别,Hashtable和HashMap也有很大的区别。
我们先来看看Hashtable吧。
成员变量:
//存储单链表表头的数组,和HashMap中类似
private transient Entry[] table;
//Hashtable中实际元素...
分类:
其他好文 时间:
2015-08-12 23:37:13
阅读次数:
152
Map如我们所知,存储的是键值对,它的基本单位是实现了Map.Entry的Node,Node 的属性如下:
static class Node implements Map.Entry {
final int hash;
final K key;
V value;
Node next;
}
看定义就能知道它的作用了,能够看到它存储...
分类:
编程语言 时间:
2015-05-13 00:57:20
阅读次数:
256
LinkedList是一个双端链表,他继承了AbstractSequentaiList,实现了List,Deque,Cloneable,和Serializable接口。Deque是双端队列的接口,LinkedList有记录头的 first 和 尾的 last,所以我们可以对队列的两端进行操作。它还实现了Cloneable和Serializeble接口,它们分别是实现队列进行拷贝和序列化的接口。...
分类:
编程语言 时间:
2015-04-25 21:15:27
阅读次数:
196
Hashtable同样是基于哈希表实现的,同样每个元素是一个key-value对,其内部也是通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长。...
分类:
编程语言 时间:
2015-03-14 12:32:20
阅读次数:
210