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 ...
随机推荐
- 自动化装配Bean
一.Spring装配-自动化装配 @Component和@ComponentScan 通过spring注解(@Component)来表明该类会作为组件类,并告知Spring要为这类创建bean,不过组 ...
- 直接用SQL语句把DBF导入SQLServer
直接用SQL语句把DBF导入SQLServer 在SQLServer中执行 SELECT * into bmk FROM OpenDataSource( ’Microsoft.Jet.OLEDB. ...
- 关于springboot中文件上传,properties配置
spring.http.multipart.enabled=true #默认支持文件上传. spring.http.multipart.file-size-threshold=0 #支持文件写入磁盘. ...
- SQL的3个主要组成
SQL语言包含3个部分:数据定义语言(DDL),数据操作语言(DML),数据控制语言(DCL) 数据定义语言(DDL) 数据定义语言用于定义和管理对象,例如数据库.数据表及视图等.典型代表有CREAT ...
- Java-实体与集合转换
import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector ...
- Appium Windows安装
安装环境 1 安装Nodejs 下载nodejs安装包(http://nodejs.org/download/)安装 测试安装是否成功:运行cmd,输入node -v 2 安装android的SDK ...
- code1154 能量项链
d[l][i]表示:从第i个珠子开始,连续l个珠子合并后释放的最大能量 状态转移方程d[l][i] = d[j][i] + d[l-j][i+j] + w[i]*w[i+j]*w[i+l],j从1到l ...
- Python之FTP传输-乾颐堂
访问FTP,无非两件事情:upload和download,最近在项目中需要从ftp下载大量文件,然后我就试着去实验自己的ftp操作类,如下(PS:此段有问题,别复制使用,可以参考去试验自己的ftp类! ...
- json日期格式话
// 对Date的扩展,将 Date 转化为指定格式的String // 月(M).日(d).小时(h).分(m).秒(s).季度(q) 可以用 1-2 个占位符, // 年(y)可以用 1-4 个占 ...
- Python - excel 详解
安装 pip install xlrd # 读xlspip install xlwt # 写xlspip install xlutils # 改写xls 读取 Excel ...