Java集合框架(Collection Framework)学习之 Collection与Map概貌
写过Java的人都知道Java集合类,也用过Java集合类。Java集合类位于 java.util 这个包下,就像它的包名暗示的那样,Java集合类就是一套工具。它就像工匠的工具箱一样,它能给使用它的人提供便利与效率。正所谓”工欲上其事,必先利其器。“ 如果我们想更好地、更高效率地完成任务,我们需要熟悉我们手上的工具。Java集合类就是这样的工具,只要我们能够熟练使用它,它就可以显著地提高我们的工作效率、让我们事半功倍。
先说说我对Java集合框架的理解: Java集合框架不是什么高深的技术,也不是什么苦涩的知识,它只是把常用的数据结构和算法集合在一起,让我们不用重复造轮子,能更轻松地、更高效地处理数据。就像就像Oracle的Java教程说的那样:Java集合框架通过提供高性能、高质量的数据结构和算法来提高程序的速度和质量并减轻你的编程负担。所以我们不必害怕学不会Java集合框架。既然是工具,多用几次就可以熟能生巧了。当然有数据结构基本能更轻松地掌握它。
稍微学习过Java集合类都知道,Java集合类这个工具箱真的太多工具了,不仅有List、有Map、有Set等。List中又有ArrayList、LinkedList等,Map中又有HashMap、TreeMap等,Set中又有。。。 此刻你是否想说:”WTF,这么多怎么学?哥不学了,洗洗睡去吧。“ 但我想说,少年,稍安勿躁!万事都有规律,只要掌握了规律再多的东西都能掌握。
Collection与Map的区别
Java集合类分为两大类:Collection和Map。为什么要这样分类呢?
先看Collection。Collection翻译为中文是”集合“的意思。学过数学都知道,集合是一类元素组成的集体,它的每一个单位元素都是单一的个体。我们可以把Collection看成是一个装着球的格子箱,箱里的每一个格子只能放一个球:

Map。Map有”映射“的意思。根据百度百科对 映射 的定义 ,我们知道映射是成对出现的,有映 才有 射 :)。所以映射的单位元素都是一对有关联的个体。我们同样可以把Map看成是一个装着球的格子箱,不同的是这次箱里的每个格子装的是两个有关联的球:

总结
- Collection: 单一个体组成的集合,每个单位只能包含一个元素。
- Map: 一对有关联的个体组成的集合,每个单位都是一对相关联的元素。
集合类概貌
分析完Collection与Map的区别后我们分别来看看它们的概貌,以便我们更好地学习它们以及它们的子集。(以下的图中,红色的类,白色的接口。为什么把接口和类分开呢?因为我们在实际操作的时候一般是实例化类的,接口一般用来向上转型的。你总不能new个接口吧?而且我们主要学的也是具体的类而不是接口)
我们先看Collection与Map的层次图:
Collection:

Map:

这种图有什么作用呢?这种图对我们学习Java集合大有裨益。我总结了几点:
- 我们在学习集合类的时候,可以参考图中的层次关系自上而下地学习,先学习顶层的类再学习下面的类。这样一来,我们就可以把共有的方法一起学了,在学习具体的类时只需学习它特有的方法。
- 在使用具体的类时也有好处,比如,使用ArrayList时,我们知道他属于Collection而Collection添加元素的共有方法是 add 。使用HashMap时,我们又知道它书属于Map而Map添加元素的共有方法是 put 。这样我们就不会把它们添加元素的方法搞混了。
- 方便我们记忆。在选择数据结构是,我们可以先分析是Collection还是Map合适。然后在从上往下回忆有哪些类可以使用。
- 能让我们更了解集合类。就我个人来说,在使用ArrayList时如果不清楚他的层次树总感觉”不太安心“。这个类就像凭空出现的一样,不知道它从哪里来又将去到哪。如果有它的层次图就有一种“所有的障碍都消失了”的感觉,有掌握全局的快感。
- 不知道。由于个人经验有限,暂时没想到其他的作用:)
最后给出Collection与Map接口定义的接口文档(方便以后自己查看:))
好了,今天就到这,之后在来总结集合类的其他具体子集!!
Java集合框架(Collection Framework)学习之 Collection与Map概貌的更多相关文章
- java集合框架(Collections Framework)
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...
- Java—集合框架 List和Set的contains()以及Map的containsKey()、containsValue()
如何判断集合中是否存在某个元素——contains() 1.List的contains(obj)方法 实际上,List调用contains(Object obj)方法时,会遍历List中的每一个元素, ...
- (Collection, List, 泛型)JAVA集合框架一
Java集合框架部分细节总结一 Collection List 有序,有下标,元素可重复 Set 无序,无下标,元素不可重复 以上为Collection接口 以ArrayList为实现类实现遍历:增强 ...
- [转]Java - 集合框架完全解析
数据结构是以某种形式将数据组织在一起的集合,它不仅存储数据,还支持访问和处理数据的操作.Java提供了几个能有效地组织和操作数据的数据结构,这些数据结构通常称为Java集合框架.在平常的学习开发中,灵 ...
- Java - 集合框架完全解析
来自:http://www.jianshu.com/p/63e76826e852 数据结构是以某种形式将数据组织在一起的集合,它不仅存储数据,还支持访问和处理数据的操作.Java提供了几个能有效地组织 ...
- Java——集合框架之ArrayList,LinkedList,迭代器Iterator
概述--集合框架 Java语言的设计者对常用的数据结构和算法做了一些规范(接口)和实现(具体实现接口的类).所有抽象出来的数据结构和操作(算法)统称为Java集合框架(Java Collection ...
- Java集合框架类
java集合框架类图 Collection接口(List.Set.Queue.Stack):
- 浅入深出之Java集合框架(下)
Java中的集合框架(下) 由于Java中的集合框架的内容比较多,在这里分为三个部分介绍Java的集合框架,内容是从浅到深,哈哈这篇其实也还是基础,惊不惊喜意不意外 ̄▽ ̄ 写文真的好累,懒得写了.. ...
- Java集合框架总结
java集合框架主要分为实现了Collection接口的List和Set.映射接口Map. |-- List 有序,元素都有索引,可重复. |-- Set 无序,不可以存储重复的元素. |-- Map ...
- Java—集合框架 Collections.sort()、Comparable接口和Comparator接口
Collentions工具类--java.util.Collections Collentions是Java集合框架中,用来操作集合对象的工具类,也是Java集合框架的成员,与List.Map和Set ...
随机推荐
- 【313】python 中 print 函数用法总结
参考:python 中 print 函数用法总结 参考:Python print() 函数(菜鸟教程) 参考:Python 3 print 函数用法总结 目录: 字符串和数值类型 变量 格式化输出 p ...
- Ubuntu 15.04 开机无法进入图形界面,自动进入emergency mode解决方法
原因:关机的时候没有正常退出,直接强制关机了... 解决: 就是在那个GIVE root password for maintenance (or type control-D to continue ...
- SPI子系统分析之二:数据结构
内核版本:3.9.5 spi_master struct spi_master用来描述一个SPI主控制器,我们一般不需要自己编写spi控制器驱动. /*结构体master代表一个SPI接口,或者叫一个 ...
- 数组和集合(二):List集合的使用总结
一.概述 · 继承collection接口,List代表一个元素有序.且可重复(包括null)的集合,集合中的每个元素都有其对应的顺序索引 · List默认按元素的添加顺序设置元素的索引 · 提供了一 ...
- minio test
docker pull minio/minio docker run --name=minio -d -p 9001:9000 minio/minio server /data https://do ...
- Linux实战教学笔记37:企业级Nginx Web服务优化实战(上)
一,Nginx基本安全优化 1.1 调整参数隐藏Nginx软件版本号信息 一般来说,软件的漏洞都和版本有关,这个很像汽车的缺陷,同一批次的要有问题就都有问题,别的批次可能就都是好的.因此,我们应尽量隐 ...
- [转]NDK编译库运行时报dlopen failed: cannot locate symbol "__exidx_end" 解决办法
原文链接:http://blog.csdn.net/acm2008/article/details/41040015 当用NDK编译的库在运行加载时报如下错: dlopen("/data/d ...
- Linux安装MySQL全过程
操作系统:CentOS 7.2 64位 mySQL版本:mysql-5.6.35 安装过程: (1)首先从mysql官网下载 MySQL Community Server 安装包. 选择对应的版本( ...
- hdcloud SOA架构
SOA是一个范式 多租户技术 一个租户可以是任何一个应用--或者是企业内部应用,或外部应用,它需要有自己的安全的和排他的虚拟计算环境.该环境包含了从存储到用户界面的所有或者某些选定的企业架构层.所 ...
- myeclipse10.X以上的破解方法
破解补丁下载地址:http://pan.baidu.com/s/1dDzVP3z 本文使用的破解补丁对MyEclipse Standard/ Professional/ Blue/ Spring的10 ...