
Java Collection
文章平均质量分 80
sicofield
这个作者很懒,什么都没留下…
展开
-
Java集合框架剖析(2)——AbstractXXX模板类
上文Java集合框架剖析(1)分析了Collection上层的一些接口。为了方便,Java抽象出AbstractCollection类来让其他类继承,该类实现类Collection中的绝大部分方法。AbstractList和AbstractSet都继承与AbstractCollection,具体的List实现类继承与AbstractList,而Set的实现类则继承与AbstractSet。 ...原创 2018-03-30 15:42:35 · 478 阅读 · 1 评论 -
Java集合框架剖析(1)---Collection接口
Collection是一个接口,它主要的两个分支是List和Set。如下图所示: List和Set都是接口,它们继承于Collection。IterableIterable接口主要实现获取迭代器的功能: CollectionCollection是一个高度抽象的接口。包含了集合的基本操作:添加、删除、清空、遍历、是否为空、获取大小等。 Collection接...原创 2018-03-30 12:35:49 · 257 阅读 · 0 评论 -
Java集合框架剖析(3)——ArrayList
ArrayList ArrayList继承了AbstractList,实现了List。它是一个数组队列,相当于动态数组。提供了相关的添加、删除、修改和遍历等功能。ArrayList实现了RandomAccess接口,即提供了随机访问功能。RandomAccess是java中用来被List实现,为List提供快速访问功能的。在ArrayList中,我们即可以通过元素的序号来快速获取元素对象...原创 2018-03-30 18:34:28 · 252 阅读 · 0 评论 -
Java集合框架剖析(4)——LinkedList
LinkedList是一个继承与AbatractSequentialList的双向链表。它也可以被当作堆栈、队列或双端队列进行操作。LinkedList实现了List接口,能对它进行队列操作。LinkedList实现了Deque接口,即能将LinkedList当作双端队列使用。LinkedList实现了java.io.Serializable接口,这意味着LinkedList支持序列化...原创 2018-03-30 19:13:45 · 299 阅读 · 0 评论 -
Java集合框架剖析(5)----fail-fast机制
在JDK的Collection中我们时常会看到类似于这样的话:例如,ArrayList:注意,迭代器的快速失败行为无法得到保证,因为一般来说,不可能对是否出现不同步并发修改做出任何硬性保证。快速失败迭代器会尽最大努力抛出 ConcurrentModificationException。因此,为提高这类迭代器的正确性而编写一个依赖于此异常的程序是错误的做法:迭代器的快速失败行为应该仅用于检测...原创 2018-04-01 15:03:36 · 390 阅读 · 0 评论 -
Java集合框架剖析(6)——Map架构
Map继承结构: 从图中可以看出:Map是一个接口,Map中存储的内容是键值对(key-value)。为了方便,我们抽象出AbstractMap类来让其他类继承,该类实现了Map中的大部分API,其他Map的具体实现就可以通过直接继承AbatractMap类即可。SortedMap也是一个接口,它继承与Map接口。SortedMap中的内容与Map中的区别在于,它是有序的键值对,里...原创 2018-04-01 16:41:10 · 253 阅读 · 0 评论 -
java集合框架剖析(7)——HashMap
HashMap不仅继承了AbstractMap,而且实现了Map、Cloneable和Serializable接口,所以HashMap也可以序列化。另外,HashMap是非同步的,但是我们可以通过Collections类的静态方法synchronizedMap获得线程安全的HashMap。即: 总览一下HashMap的主要接口: 存储结构 HashMap的底层主要是基于数...原创 2018-04-01 16:57:02 · 285 阅读 · 0 评论 -
java集合框架剖析(8)——Hashtable
##Hashtable继承结构: 们可以看出,HashTable不但继承了Dictionary,而且实现了Map、Cloneable和Serializable接口,所以HashTable也可以实例化。HashTable和hashMap不同,HashTable是线程安全的(等会我们在源码中就能看出)。接口 put方法中,首先检测value是否为null,如果为null则会抛出...原创 2018-04-03 16:37:01 · 465 阅读 · 0 评论