废话开篇

自己学完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)。

QueueDeque

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

Map

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

SortedSetSortedMap

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

废话收尾

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

Java Collections Source Code Series 2 ---接口的更多相关文章

  1. Java Collections Source Code Series 1 --- 简介

    废话开篇 由于项目需要,需要对Java Collections进行系统地了解,所以在此记录下,方便自己,服务他人. Java Collections 简介 Java Collections 框架主要包 ...

  2. Sound (audio file) player in java - working source code example

    转载自:http://ganeshtiwaridotcomdotnp.blogspot.com/2011/12/sound-audio-file-player-in-java-working.html ...

  3. [转]Native Java Bytecode Debugging without Source Code

    link from:http://www.crowdstrike.com/blog/native-java-bytecode-debugging-without-source-code/index.h ...

  4. Learning from the CakePHP source code - Part I

    最近开始痛定思痛,研究cakephp的源码. 成长的路上从来没有捷径,没有小聪明. 只有傻傻的努力,你才能听到到成长的声音. 下面这篇文章虽然过时了,但是还是可以看到作者的精神,仿佛与作者隔着时空的交 ...

  5. Artistic Style 3.1 A Free, Fast, and Small Automatic Formatter for C, C++, C++/CLI, Objective‑C, C#, and Java Source Code

    Artistic Style - Index http://astyle.sourceforge.net/ Artistic Style 3.1 A Free, Fast, and Small Aut ...

  6. Java Sound : generate play sine wave - source code

    转载自:http://ganeshtiwaridotcomdotnp.blogspot.com/2011/12/java-sound-generate-play-sine-wave.html Work ...

  7. 转: Source Code Lookup in Eclipse(主要讲的是java的)

    Source Code Lookup in Eclipse https://www.intertech.com/Blog/source-code-lookup-in-eclipse/

  8. JAVA常用基础知识点[继承,抽象,接口,静态,枚举,反射,泛型,多线程...]

    类的继承 Java只支持单继承,不允许多重继承- 一个子类只能有一个父类- 一个父类可以派生出多个子类这里写图片描述子类继承了父类,就继承了父类的方法和属性.在子类中,可以使用父类中定义的方法和属性, ...

  9. Memcached source code analysis (threading model)--reference

    Look under the start memcahced threading process memcached multi-threaded mainly by instantiating mu ...

随机推荐

  1. tornado框架之路三之ajax

    一.ajax 1.传统的Web应用 一个简单操作需要重新加载全局数据 2.AJAX AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是 ...

  2. C语言中的fread和fwrite

    C语言中的fread和fwrite是专门用来操作文件的方法. 1. fread负责从打开的文件指针中读取文件内容. 函数原型:size_t fread(void *p, size_t size, si ...

  3. 二模11day2解题报告

    T1.修改文章(amend) 给出n个单词和一个长度为m的字符串,求改动多少个字符才能使字符串全由单词组成. 要说这道题还真的坑很坑超坑非常坑无敌坑--不过还是先想到了动规.毕竟要修改的前提是要组成的 ...

  4. phonegap ios默认启动页

    phonegap创建的项目默认的启动界面是phonegap的图标,想去掉这个图标,有两个方法,第一就是将resourece下面的splash文件下面的图片改成自己想要的启动页面,名字要相同,替换掉它默 ...

  5. jQuery右键菜单ContextMenu使用笔记

    插件下载地址:http://www.trendskitchens.co.nz/jquery/contextmenu/jquery.contextmenu.r2.packed.js 和http://ww ...

  6. iOS iOS7 20px 处理

    - (void)viewWillAppear:(BOOL)animated { // View defaults to full size. If you want to customize the ...

  7. js的二元三元操作符

    二元 if ( a == b) { alert(a) } // (a == b) && alert(a) if ( a != b) { alert(a) } // (a == b) | ...

  8. $watch 和 $apply

    1.当你使用 ng-model, ng-repeat 等等来绑定一个元素的值时, AngularJS 为那个值创建了一个 $watch,只要这个值在 AngularJS 的范围内有任何改变,所有的地方 ...

  9. leetcode 19

    最开始用一般的方法,首先遍历链表求出长度,进而求出需要删除节点的位置,最后进行节点的删除. 代码如下: /** * Definition for singly-linked list. * struc ...

  10. 通过string型类名实例化一个类

    DataTable dt = new DBHelper().getIndexInfo(code_id); DataRow row = dt.Rows[0]; string dllName = row[ ...