hashset java 键值对_Java 集合系列之总体结构概览01

e5c4bba8ecebb2a8dc5520de3e2d4a2a.png

在分析各集合实现类源码之前,先介绍下 Java 集合的总体结构,上图:

105b45114a9b10530a9639a58c16a9ff.png

看着很复杂,我大致理一下,这里面主要包括两个接口:Collection 和 Map。

1,Collection 是一个高度抽象出来的接口,包含了集合的基本操作和属性,其有两个分支:List 接口 和 Set 接口。

(1)List 接口是一个有序的队列,每个元素自带索引,索引从 0 开始,List 的实现类有 LinkedList,ArrayList,Vector,Stack。

(2)Set 是一个不带重复元素的集合接口,其实现类有 HashSet 和 TreeSet,HashSet 依赖于 HashMap 实现,TreeSet 依赖于 TreeMap 实现,此处只贴张源码图展示下,暂时不展开,后面会具体讲解怎么实现。

65b8b0f119239501d496083ab65cbf38.png

2,Map 是一个键值对接口,即 Key-Value 存在的形式,也即 Map 中每一个元素都带一个 key 以及 key 所对应的 value。AbstractMap 是一个抽象类,实现了 Map 接口里面的大部分方法,TreeMap,HashMap,WeakHashMap 都是 AbstractMap 的实现类。HashTable 也实现了 Map 接口,拥有 Map 接口中的方法。

3,Iterator 属于一个工具类,用来遍历集合。因为 Collection 继承了 Iterable 接口,所以实现了 Collection 接口的类都具有可迭代性,iterator() 方法会返回一个 Iterator 对象。另外 ListIterator 是专门为遍历 List 而存在的。

4,再看 Enumeration,它是 JDK 1.0 引入的抽象类。作用和 Iterator 一样,也是遍历集合用的,但是 Enumeration 的功能要比 Iterator 少。在上面的框图中,Enumeration 只能在Hashtable, Vector, Stack 中使用。

这就是 Java 集合的总体概览,下一节我将就 ArrayList 源码展开讲。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值