Java Collections Source Code Series 2 ---接口

废话开篇

自己学完Java Collections框架之后,其中的一个较大的收获就是接口对于层次的重要性。Java Collections的最终实现至少有几十个,其中很多都有非常相似的功能(method), 如果各个实现中部分代码都是相同的,就没有做到代码reused。想想吧,开发JDK的那些大牛们,怎么可能会犯这么低级的错误呢,说远了,回到正题上:接口。

Java Collections 接口整体框架图

下面这张图是Java Collections的核心集合接口图(来自于官方文档),同时也是Java Collections Framework的基础。需要注意的是Map属于Java Collection Framework,但是不是继承了Collection interface, 我以前就混淆过这两个东西。

Two interface trees, one starting with Collection and including Set, SortedSet, List, and Queue, and the other starting with Map and including SortedMap.

下面对各个不同的interface进行下简单的介绍,以后还是详细的展开,现在先有个大致的印象吧。

Collection

Java Collection Framework的最高层,与Map并列,成为了很多其他interface的爹或者爷爷或者祖爷...

Set

Set interface的爹是collection interface, 最大的特点一定要记住,就是不能包含重复的值。

List

和Set的区别之一就是可以包含重复的元素,而且是可以有序的(ordered)。

QueueDeque

最大的特点就是处理元素是按照某种顺序的(例如FIFO或者LIFO),包含一些其他interface没有的方法,以满足按照顺序来处理元素的特点。QueueDeque的区别在于:Queue的插入和删除操作分别在队列的尾和头,而Deque的两端都可以就行插入和删除操作。

Map

专门为那些key/value操作设计的,不能包含相同的key,key和value符合一对一或者多对一的原则,不能一对多。

SortedSetSortedMap

这两种interface其实就是Set和Map的排序版,即包含的值是有顺序的(一般为升序)。各自的功能和Set、Map差不多。

废话收尾

通过上面的介绍,希望你能有个大致的了解,以前不怎么写博客,估计可能会出现错别字,病句的现象,只能慢慢发现慢慢改正,如果你发现了,顺便指出来啊,方便后人嘛。

原文地址:https://www.cnblogs.com/RobertC/p/3603917.html