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, 我以前就混淆过这两个东西。
下面对各个不同的interface进行下简单的介绍,以后还是详细的展开,现在先有个大致的印象吧。
Collection
Java Collection Framework的最高层,与Map并列,成为了很多其他interface的爹或者爷爷或者祖爷...
Set
Set interface的爹是collection interface, 最大的特点一定要记住,就是不能包含重复的值。
List
和Set的区别之一就是可以包含重复的元素,而且是可以有序的(ordered)。
Queue
和Deque
最大的特点就是处理元素是按照某种顺序的(例如FIFO或者LIFO),包含一些其他interface没有的方法,以满足按照顺序来处理元素的特点。Queue
和Deque的区别在于:
Queue
的插入和删除操作分别在队列的尾和头,而Deque的两端都可以就行插入和删除操作。
Map
专门为那些key/value操作设计的,不能包含相同的key,key和value符合一对一或者多对一的原则,不能一对多。
SortedSet
和SortedMap
这两种interface其实就是Set和Map的排序版,即包含的值是有顺序的(一般为升序)。各自的功能和Set、Map差不多。
废话收尾
通过上面的介绍,希望你能有个大致的了解,以前不怎么写博客,估计可能会出现错别字,病句的现象,只能慢慢发现慢慢改正,如果你发现了,顺便指出来啊,方便后人嘛。