Java常用集合源码级深度解析

 

Java集合工具包位于Java.util包下,包含了很多常用的数据结构,如数组、链表、栈、队列、集合、哈希表等。学习Java集合框架下大致可以分为如下五个部分:List列表、Set集合、Map映射、迭代器(Iterator、Enumeration)、工具类(Arrays、Collections)。

 

 

Java集合类的整体框架如下:

 

Java常用集合源码级深度解析_第1张图片

 

从上图中可以看出,集合类主要分为两大类:Collection和Map。

Collection是List、Set等集合高度抽象出来的接口,它包含了这些集合的基本操作,它主要又分为两大部分:List和Set。
 

List

 

List接口通常表示一个列表(数组、队列、链表、栈等),其中的元素可以重复,常用实现类为ArrayList和LinkedList,另外还有不常用的Vector。另外,LinkedList还是实现了Queue接口,因此也可以作为队列使用。

 

LinkedList是基于双向循环链表实现的 如图

Java常用集合源码级深度解析_第2张图片

LinkedList传送门:Java集合深度解析之LinkedList

 

Java常用集合源码级深度解析_第3张图片

 

ArrayList传送门:Java集合深度解析之ArrayList

 

Set

 

Set接口通常表示一个集合,其中的元素不允许重复(通过hashcode和equals函数保证),常用实现类有HashSet和TreeSet,HashSet是通过Map中的HashMap实现的,而TreeSet是通过Map中的TreeMap实现的。另外,TreeSet还实现了SortedSet接口,因此是有序的集合(集合中的元素要实现Comparable接口,并覆写Compartor函数才行)。

 

set集合的结构如下

 

Java常用集合源码级深度解析_第4张图片


根据整体框架图我们看到,抽象类AbstractCollection、AbstractList和AbstractSet分别实现了Collection、List和Set接口,这就是在Java集合框架中用的很多的适配器设计模式,用这些抽象类去实现接口,在抽象类中实现接口中的若干或全部方法,这样下面的一些类只需直接继承该抽象类,并实现自己需要的方法即可,而不用实现接口中的全部抽象方法。
 

Map

 

Map是一个映射接口,其中的每个元素都是一个key-value键值对,同样抽象类AbstractMap通过适配器模式实现了Map接口中的大部分函数,TreeMap、HashMap、WeakHashMap等实现类都通过继承AbstractMap来实现,另外,不常用的HashTable直接实现了Map接口,它和Vector都是JDK1.0就引入的集合类。

 

Map集合结构如下:

 

Java常用集合源码级深度解析_第5张图片

 

TreeMap传送门:Java集合深度解析之TreeMap

Hashtable传送门Java集合深度解析之Hashtable

HashMap传送门Java集合深度解析之HashMap


Iterator是遍历集合的迭代器(不能遍历Map,只用来遍历Collection),Collection的实现类都实现了iterator()函数,它返回一个Iterator对象,用来遍历集合,ListIterator则专门用来遍历List。而Enumeration则是JDK1.0时引入的,作用与Iterator相同,但它的功能比Iterator要少,它只能再Hashtable、Vector和Stack中使用。

Arrays和Collections是用来操作数组、集合的两个工具类,例如在ArrayList和Vector中大量调用了Arrays.Copyof()方法,而Collections中有很多静态方法可以返回各集合类的synchronized版本,即线程安全的版本,当然了,如果要用线程安全的结合类,首选Concurrent并发包下的对应的集合类。

 

如果小伙伴还没有学习java集合的基础操作 小编整理了一套视频 java基础的学习视频非常不错

 

地址:https://pan.baidu.com/s/1zubqhfcAtFMHwACG26LqOQ 密码:4f6w

 

如果链接失效请及时留言 更多学习视频关注此公众号回复 “学习” 获取

 

原链:http://blog.csdn.net/ns_code/article/details/35564663

 

 

推荐阅读:

 

技术:设计图都不会画,还想做”架构师“?

技术:HTTP状态码大全 

技术:SpringBoot 如何在一分钟内整合SSM?

技术:CentOS7下Nginx服务器安装与使用教程

技术:Java9逆天的十大新特性

技术:http2.0的时代真的来了...

 

工具:如何通过技术手段 “干掉” 视频APP里讨厌的广告?

工具:通过技术手段 “干掉” 视频APP里讨厌的广告之(腾讯视频)

 

干货分享:

 

分享:1T 软件开发视频资源分享

分享:深度机器学习56G视频资源分享

你可能感兴趣的:(互联网开发)