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 ...
随机推荐
- Vue使用echarts
Vue使用echarts 该示例使用 vue-cli 脚手架搭建 安装echarts依赖 npm install echarts -S 创建图表 全局引入 main.js // 引入echarts i ...
- krpano之小地图
效果: 点击地图按钮时,小地图移入,再次点击时移出. 地图上显示表示场景位置的坐标点,和可控制场景观看方向的雷达区. 插件: radar.js(plugins) radar.swf(plugins) ...
- NodeJs中require use get typescript及其他知识点集合
NodeJs的Express使用 nodejs事件的监听与事件的触发 TypeScript学习笔记 深入浅出Node.js Nodejs开发Office插件 类百度文库文档上传.转换和展示功能项目开源 ...
- 微信小程序从入坑到放弃之坑十二:navigator无法跳转的坑
转自:http://www.yilingsj.com/xwzj/2018-11-25/weixin-miniprogram-navigator.html 微信小程序中的页面跳转用navigator就行 ...
- RocketMQ初探(四)之RocketMQ4.x版本可视化管理控制台rocketmq-console-ng搭建(Apache)
之前有部署过3.2.6为AliBaba版本的Web监控平台(可参考之前博客 https://www.cnblogs.com/buyige/p/9395453.html),现用RocketMQ4.2.0 ...
- javascript 模拟选择下拉框的某一个option元素的效果
需要在单元测试模拟它,百度谷歌了好久都没有.后来认真想想,还是找到办法了.因为我们手动交互某一行为,首先是让它的某些属性发生变化,其次是让它触发某事件.想明白这一点就简单了.让属性发生变化,当然是改动 ...
- ios编译出错:UIButton.h' has been modified since the precompiled header UIKit.pcm' was built
今天编译遇到个问题:如下 fatal error: file '/Applications/Xcode 2.app/Contents/Developer/Platforms/iPhoneSimulat ...
- addin1
Mono.addin是一个插件框架,更多信息请访问 http://monoaddins.codeplex.com/
- VIM-美化你的标签栏
vim的标签栏是一个比较有用的功能,我们可以通过gt和gT快捷键前后切换标签页,也可以用数字+gt的方式,快速跳转到某个标签页,但是默认的标签栏上标签序号并没有显示出来,在标签页较多的时候,想要通过数 ...
- Linux 安装elasticsearch、node.js、elasticsearch-head
前提:下载es的安装包 官网可以下载 es官网 安装elasticsearch 1 新建两个文件夹 一个存放安装文件,一个存放解压后的文件 mkdir -p /export/software //存放 ...