搜索
写经验 领红包
 > 健康

java中容器类(java中容器的意思是什么)

导语:Java基础编程篇(二)-容器类的梳理

在Java开发中,我们经常会用到容器类,例如ArrayList、LinkedList、HashMap、HashSet、HashTable、Vector等等。在Java开发中用好容器类库将有助于提高我们的代码质量和编码效率。本文主要是梳理清楚容器类之间的关系。

图1 容器类关系图

本文主要是基于JDK1.8源码查看了容器类之间的关系,并以类图的形式进行展现,如图1容器类关系图。

1、最上层的为Collection接口类。Collection为容器类的根接口类,可以说是基础中的基础。

Collection接口中定义了我们常用的接口。例如,size(),isEmpty(),contains(Object o),iterator(),add(E e),remove(Object o),clear()。这些接口大家一点也不陌生,这些接口就是在这里定义的。Collection接口还继承了Iterable接口。Iterable接口定义了iterator()和forEach(Consumer<? super T> action)接口,主要用于定义迭代器接口。像ArrayList容器等会实现迭代器接口,可通过迭代器遍历容器中的元素。总结,Collection接口和Iterable接口对容器类做了个一个高度抽象,定义了容器类所应具备的基本操作。

2、Collection接口类的下层抽象出了三个接口,分别是List、Set和Queue。这三个接口在原来Collection接口的基础上抽象出了各自的接口,体现了容器的多样性。

3、AbstractCollection抽象类主要对Collection接口进行了部分实现。

4、Map接口没有继承Collection类接口,但依赖于Collection接口,这个没有详细研究开发人员为何如此设计。主要是针对map容器进行抽象,定义了map容器的基本操作。

5、AbstractList继承自AbstractCollection,同时对List接口中一些特有方法进行实现。AbstractSet实现方式与AbstractList实现方式类似。

6、AbstractMap主要实现map接口。

7、ArrayList继承自AbstractList,同时实现List接口方法,是具体List容器类。Vector类实现方式与ArrayList在继承实现共性的同时,体现了自身的个性。

8、LinkedList继承自AbstractSequentialList,实现List接口。这个与ArrayList的最大区别是此类是基于链表。

9、Vector类继承自AbstractList,相比于数组的固定大小,提供可增长的数据存储。

10、Stack继承自Vector,代表了一种后进先出的数据存储容器。

11、HashSet实现Set接口,实际上就是HashMap的实例化。

12、LinkedHashSet继承自HashSet实现Set接口,TreeSet继承自AbstractSet。

13、HashTable继承自Dictionary,实现Map接口。

14、HashMap继承自AbstractMap,实现Map接口。

15、LinkedHashMap继承自HashMap,实现Map接口。

16、TreeMap继承自AbstractMap接口。

17、Queue接口继承自Collection接口,同时抽象除了队列自身的接口。

综上所述:通过容器类之间的关系,我们可以了解容器设计实现的思路。首先是高度抽象出容器接口,然后再次抽象不同类型容器接口,像List、Set、Queue以及Map接口,再次编写抽象类针对抽象出的接口进行实现,最后是我们真正用到的容器的实现,像HashMap、ArrayList、HashTable以及HashSet等等。通过这样的分析,我们可以发现容器库设计的层次性以及Java的抽象、继承的特性。

开发经验,熟悉多种框架,熟悉网络编程,熟悉java安全编程,熟悉大数据,熟悉多种安全协议,熟悉并发编程,有兴趣的同学可以互相关注,互相学习!!!我们不是代码的奴隶,我们代码的驾驭者。将你的编程思想融入代码,让代码活起来。

免责声明:本站部份内容由优秀作者和原创用户编辑投稿,本站仅提供存储服务,不拥有所有权,不承担法律责任。若涉嫌侵权/违法的,请反馈,一经查实立刻删除内容。本文内容由快快网络小舻创作整理编辑!