JDK集合框架结构分析(二)
集合框架结构分析02
在学习之前最好有 泛型、泛型协变性 方面的知识
Map接口:
这里需要的是这里的 Map 接口中定义了一个Entry 接口 (接口中内定义接口 是允许的)
Map接口一个抽象类实现 AbstractMap:
这个抽象类中 添加了一些新的方法同时提供了两个 Entry 接口的实现 一个是SimpleEntry一个是SimpleImmutableEntry 后者表示 不可变的 不支持setValue方法
接口 SortMap继承自 Map接口:
SortedMap 扩展了Map 定义了一些其他的方法
接口 NavigableMap 继承自 SortedMap (Navigable表示 可操纵的):
NavigableMap 继续扩展了 SortedMap
接下来就是 第一个Map类的介绍:TreeMap:
这个类的方法、实现结构 很复杂:
它的 Entry类是 一个 红黑树结构(某种平衡二叉树) 这里只介绍不深入讲解
HashMap 类介绍:
Java中的 Hash结构的实现是使用的是 分离链接法
这个类的实现也是很复杂,这个类的 Entry 接口实现类是一个链表的数据结构
HashMap 中的 hash 算法:
由于Set的底层实现方式是使用Map,所以Set也归类到Map这里讲述
SET 接口继承自Collection
SET提供一个抽象类实现:AbstractSet:
SortedSet接口 继承自Set接口:
NavigableSet接口 继承自SortedSet接口:
介绍第一个Set类:TreeSet:
TreeSet 其实是由一个TreeMap实现的:
HashSet 介绍的第二个Set类:
这个类其实是由HashMap实现的
最后介绍一个 优先队列:PriorityQueue
它 使用一种 二叉堆 数据结构(一种完全二叉树,任意根节点小于它的所有后裔)
到此为止 java中 所有的基本数据结构都介绍完,接下来每个数据结构深入剖析。