JAVA常用集合框架源码解析(基于1.8)开题篇

编程知识 更新时间:2023-04-07 23:54:34

倪升武的博客中有一个小专题,读完之后,发现博主的分析基本是基于JAVA1.7的,这里我基于JAVA1.8给出一些新的解读。但是对于JAVA1.8添加的一些新特性可能不太会作过多的分析(毕竟本人目前水平有限,且本博客的写作初衷也是以基础学习为主),在彻底浅读完JAVA1.8集合部分之前,我无法了解JAVA1.7与1.8之间关于集合框架的改动到底会有多少,因此可能产生某些个人理解上的不当,希望大家可以予以指正。

集合分类

1.Collection框架

首先是一个Collection框架图:

标注:从网上看过好多图片,分类是比较明确,但是感觉图不够醒目清晰,因此我自己又重新画了一个。有些集合类没有画出来(如Vector的子类Stack等),其他如有不当之处,敬请指正。上图中,接口我用蓝色字体矩形框标示,抽象类用橙色椭圆形框标示,最终的实体类用红色六边形标示。另外,虚线标示实现(implements),实线标示继承(extends)。

  • 从图中我们可以看出,Collection接口下共有Set、List、Queue三个子接口。由于后面我们要着重分析的是ArrayList、LinkedList、TreeSet、HashSet,因此我们不对Queue这个子接口做过多的解读。
  • List接口:List是一个有序的集合,每个元素都有索引且起始索引位置为0。
  • Set接口:Set是一个无序的集合,而且Set中不允许有重复元素。HashSet和HashMap之间、TreeSet和TreeMap之间还有依赖关系,后面我们会讲到。

2.Map框架

然后是一个Map框架图:

  • Map接口:主要用来处理映射关系的集合。其中的每一个元素都是一个键值对(Entry)。
  • AbstractMap:实现Map的一个抽象类,Map中大多数方法都实现了。
  • HashTable:由于历史原因依旧继承Directionary类,但是实现了Map接口。

3.集合框架中用到的一些类

  • Iterator是遍历集合的工具,我们通常使用Iterator迭代器来遍历集合。Collection依赖于Iterator是因为Collection的实现类都要实现iterator()方法,返回一个Iterator对象。ListIterator是专门为遍历Collection而存在的。
  • Enumeration是JDK1.0引入的抽象类,作用和Iterator一样,也是遍历集合,但是Enumeration的功能要比Iterator少,在上面的框图中,Enumeration只能在HashTable,Vector和Stack中使用。

小结:从上面的分类我们可以看出,Collection接口和Map是相互独立的接口。另外,Array和Collections是2个有用的类,其内部实现了很多静态的集合方法,Collections提供了一些列静态方法以实现对各种集合的搜索、排序、线程安全化等操作,其中大多数方法用来处理线性表。Collections类不能实例化,如同一个工具类,服务与Collection框架。若在使用Collections的方法时,对应的collection对象为null,那么会抛出NullPointerException异常。

更多推荐

JAVA常用集合框架源码解析(基于1.8)开题篇

本文发布于:2023-04-07 23:54:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/c8c09097e836493c7ab40a107abc1b3c.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:源码   框架   常用   JAVA

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 55214文章数
  • 14阅读数
  • 0评论数