![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Collection
LUAJDC
带你体验随心、随意、随性、随遇而安的生活,体会世间处处存在的美好!
展开
-
Java-Collection源码分析(二)——Iterator和ListIterator
一、Iterator接口Iterator接口是集合的迭代器,代替Java集合框架中的枚举,允许调用者在迭代期间从底层集合中删除元素,并具有明确定义的语义。public interface Iterator { boolean hasNext(); E next(); default void remove() { throw new Unsupp原创 2017-09-25 13:13:08 · 346 阅读 · 0 评论 -
Java-Collection源码分析(十三)——TreeMap
TreeMap采用了红黑树的数据结构。一、红黑树红黑树是一个二叉搜索树,它在每个节点上增加了一个存储位来表示节点颜色,可以是RED或BLACK。红黑树的本质还是二叉树。由二叉树进化为2-3树或者是2-3-4树,然后再进化为红黑树,接下来将《算法导论》和《算法(第四版)》中的红黑树进行对比。《算法导论》中规则:(1)、每个节点都只能是红色或者黑色;(2)、根节点是黑色;(原创 2017-09-29 19:36:09 · 333 阅读 · 0 评论 -
Java-Collection源码分析(七)——HashMap
阅读源码的能力还是太菜,光理解HashMap的数据结构就花了我大半天的时间。JDK1.8中的HashMap的数据结构采用了数组、单向链表和红黑树组合的形式。一、数据结构数组中保存的是链表的首节点,当链表的数量大于8时,就会将链表结构转换为红黑树结构。否则采用单向链表的结构进行操作。通过分析可以得到HashMap的key和value可以为Null,但是key不允许重复,如果k原创 2017-09-27 17:17:49 · 193 阅读 · 0 评论 -
Java-Collection源码分析(十二)——Set、AbstractSet、HashSet和LinkedHashSet
一、set的集合框架二、Set接口Set接口除了从Collection接口继承之外,还添加了所有构造函数的约定以及add,equals和hashCode方法的约定。public interface Set extends Collection { //返回此集合中的元素数(其基数)。 int size(); //如果此集合不包含元素,则返回true。原创 2017-09-28 22:04:28 · 703 阅读 · 0 评论 -
Java-Collection源码分析(十二)——SortedMap和NavigableMap
一、SortedMappublic interface SortedMap extends Map { //返回用于对该地图中的键进行排序的比较器,如果此map使用其键的自然排序,则返回null。 Comparator comparator(); //返回该地图部分的视图,其关键范围从fromKey(包括)到toKey(独占)。 SortedMap subMap(K原创 2017-09-28 21:09:18 · 315 阅读 · 0 评论 -
Java-Collection源码分析(十一)—— IdentityHashMap
IdentityHashMap继承了AbstractMap类实现了Map 接口。主要有两方面的特点:在数据结构方面:将key与value值相继保存在hash表中,如下图所示在查找数据方面:value值采用的“==”的方式,而不是“equals”的方式。源码分析(数据结构与实现方法):public class IdentityHashMap extends AbstractM原创 2017-09-28 17:41:35 · 229 阅读 · 0 评论 -
Java-Collection源码分析(十)——hashTable
Hashtable同样是基于哈希表实现的,同样每个元素是一个key-value对,不允许value值为null,采用单向链表的形式。具体操作与单向链表相同。源码分析public class Hashtable extends Dictionary implements Map, Cloneable, java.io.Serializable { //hashtable 的数据原创 2017-09-28 15:04:24 · 181 阅读 · 0 评论 -
Java-Collection源码分析(九)——WeakHashMap
WeakHashMap 继承于AbstractMap,实现了Map接口。和HashMap一样,WeakHashMap也是一个哈希表,它存储的内容也是键值对(key-value)映射,而且键和值都可以是null。WeakHashMap中的每个关键对象间接存储为弱引用的引用。因此,只有在地图的内部和外部的弱引用之后,密钥才会被垃圾回收器清除。一、WeakHashMap的垃圾回收机制1.1原创 2017-09-28 11:14:14 · 172 阅读 · 0 评论 -
Java-Collection源码分析(八)——LinkedHashMap
一、LinkedHashMap数据结构LinkedHashMap是建立在HashMap的数组、链表和红黑树的基础上,添加了一个双向循环列表,将HashMap中的元素链接起来。 static class Entry extends HashMap.Node { Entry before, after; Entry(int hash, K key, V原创 2017-09-27 21:42:55 · 206 阅读 · 0 评论 -
Java-Collection源码分析(六)——Map接口
Map的集合框架Map接口将键映射到值的对象。map不能包含重复的键;每个键可以映射到最多一个值。该接口取代了Dictionary类,Dictionary是一个完全抽象的类而不是接口。Map接口提供三个集合视图,允许将映射内容视为一组键、值集合或者是键值映射集合。map的顺序被定义为地图集合视图上的迭代器返回其元素的顺序。一些map实现,对其顺序做出特定的保证,如TreeMap类;原创 2017-09-26 15:31:12 · 210 阅读 · 0 评论 -
Java-Collection源码分析(五)——AbstractSequentiaList和LinkedList
AbstractSequentialList抽象类这个类提供了一个基本的List接口实现,为实现序列访问的数据储存结构的提供了所需要的最小化的接口实现。对于支持随机访问数据的List比如数组,应该优先使用AbstractList。是AbstractList类中与随机访问类相对的另一套系统,采用的是在迭代器的基础上实现的get、set、add和remove方法。public abst原创 2017-09-26 10:57:58 · 206 阅读 · 0 评论 -
Java-Collection源码分析(三)——List和AbstractList
一、List接口有序集合(也称为序列)。该界面的用户可以精确控制列表中每个元素的插入位置。用户可以通过整数索引(列表中的位置)访问元素,并搜索列表中的元素。与集合不同,列表通常允许重复的元素(包括空元素)。列表界面除了Collection中指定的附加条款之外,还添加了迭代器,add,remove,equals和hashCode方法。public interface List ext原创 2017-09-25 14:20:55 · 256 阅读 · 0 评论 -
Java-Collection源码分析(四)——ArrayList
ArrayList类ArrayList是实现List接口的动态数组,所谓动态就是它的大小是可变的。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。部分源码 private static final long serialVersionUID = 86834525811228921原创 2017-09-25 20:31:07 · 200 阅读 · 0 评论 -
Java-Collection源码分析(一)——Collection接口和AbstractCollection类
一、Collection整体架构二、Collection源码分析Collection提供了高度抽象的处理集合的基本方法: int size(); boolean isEmpty(); boolean contains(Object o); Iterator iterator(); Object[]原创 2017-09-25 10:26:34 · 253 阅读 · 0 评论 -
Java-Collection源码分析(十四)——SortedSet、NavigableSet和TreeSet
一、SortedSet接口此接口主要定义了一些抽象的基本方法public interface SortedSet extends Set { //返回用于对该集合中的元素进行排序的比较器,如果此集合使用其元素的自然排序,则返回null。 Comparator comparator(); //返回此集合的部分的视图,其元素的范围从fromElement(包括)到toE原创 2017-09-29 20:46:59 · 271 阅读 · 0 评论