写过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集合大有裨益。我总结了几点:

  1. 我们在学习集合类的时候,可以参考图中的层次关系自上而下地学习,先学习顶层的类再学习下面的类。这样一来,我们就可以把共有的方法一起学了,在学习具体的类时只需学习它特有的方法。
  2. 在使用具体的类时也有好处,比如,使用ArrayList时,我们知道他属于Collection而Collection添加元素的共有方法是 add 。使用HashMap时,我们又知道它书属于Map而Map添加元素的共有方法是 put 。这样我们就不会把它们添加元素的方法搞混了。
  3. 方便我们记忆。在选择数据结构是,我们可以先分析是Collection还是Map合适。然后在从上往下回忆有哪些类可以使用。
  4. 能让我们更了解集合类。就我个人来说,在使用ArrayList时如果不清楚他的层次树总感觉”不太安心“。这个类就像凭空出现的一样,不知道它从哪里来又将去到哪。如果有它的层次图就有一种“所有的障碍都消失了”的感觉,有掌握全局的快感。
  5. 不知道。由于个人经验有限,暂时没想到其他的作用:)

最后给出Collection与Map接口定义的接口文档(方便以后自己查看:))

好了,今天就到这,之后在来总结集合类的其他具体子集!!

Java集合框架(Collection Framework)学习之 Collection与Map概貌的更多相关文章

  1. java集合框架(Collections Framework)

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  2. Java—集合框架 List和Set的contains()以及Map的containsKey()、containsValue()

    如何判断集合中是否存在某个元素——contains() 1.List的contains(obj)方法 实际上,List调用contains(Object obj)方法时,会遍历List中的每一个元素, ...

  3. (Collection, List, 泛型)JAVA集合框架一

    Java集合框架部分细节总结一 Collection List 有序,有下标,元素可重复 Set 无序,无下标,元素不可重复 以上为Collection接口 以ArrayList为实现类实现遍历:增强 ...

  4. [转]Java - 集合框架完全解析

    数据结构是以某种形式将数据组织在一起的集合,它不仅存储数据,还支持访问和处理数据的操作.Java提供了几个能有效地组织和操作数据的数据结构,这些数据结构通常称为Java集合框架.在平常的学习开发中,灵 ...

  5. Java - 集合框架完全解析

    来自:http://www.jianshu.com/p/63e76826e852 数据结构是以某种形式将数据组织在一起的集合,它不仅存储数据,还支持访问和处理数据的操作.Java提供了几个能有效地组织 ...

  6. Java——集合框架之ArrayList,LinkedList,迭代器Iterator

    概述--集合框架 Java语言的设计者对常用的数据结构和算法做了一些规范(接口)和实现(具体实现接口的类).所有抽象出来的数据结构和操作(算法)统称为Java集合框架(Java Collection ...

  7. Java集合框架类

    java集合框架类图 Collection接口(List.Set.Queue.Stack):

  8. 浅入深出之Java集合框架(下)

    Java中的集合框架(下) 由于Java中的集合框架的内容比较多,在这里分为三个部分介绍Java的集合框架,内容是从浅到深,哈哈这篇其实也还是基础,惊不惊喜意不意外 ̄▽ ̄ 写文真的好累,懒得写了.. ...

  9. Java集合框架总结

    java集合框架主要分为实现了Collection接口的List和Set.映射接口Map. |-- List 有序,元素都有索引,可重复. |-- Set 无序,不可以存储重复的元素. |-- Map ...

  10. Java—集合框架 Collections.sort()、Comparable接口和Comparator接口

    Collentions工具类--java.util.Collections Collentions是Java集合框架中,用来操作集合对象的工具类,也是Java集合框架的成员,与List.Map和Set ...

随机推荐

  1. NIO编程介绍

    代码: package bhz.nio; import java.io.IOException; import java.net.InetSocketAddress; import java.nio. ...

  2. 读取resource下文件

    ArrayList<PatrolOper> patrolOpers = new ArrayList<>(); String jsonData = null; File json ...

  3. 用jQuery获取table中行id和td值

    <%@ page language="java" pageEncoding="UTF-8"%> <% String path = reques ...

  4. Visual Studio Find All no results.

    重装WDK什么的有时候有bug....写下面注册表修复 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Wow6432Node\CLSI ...

  5. Unity 之 Shader 面的剔除 Cull

    面的剔除 Cull 在渲染的时候,默认情况下是只有朝向摄像机的面才会被渲染,可以告诉Unity,我想渲染哪一个朝向的面,使用Cull命令在计算体积阴影的时候会用到对Cull的操作来计算和物体相交的投影 ...

  6. ubuntu18(笔记本) faster-rcnn实例程序运行

    luo@luo-ThinkPad-W540:TensorflowProject$ source activate flappbird (flappbird) luo@luo-ThinkPad-W540 ...

  7. 636. Exclusive Time of Functions 进程的执行时间

    [抄题]: Given the running logs of n functions that are executed in a nonpreemptive single threaded CPU ...

  8. Python String模块详解

    >>> import string >>> string.ascii_letters 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKL ...

  9. 洛谷 P1103 书本整理(动规)

    洛谷 P1103 书本整理 题目描述 Frank是一个非常喜爱整洁的人.他有一大堆书和一个书架,想要把书放在书架上.书架可以放下所有的书,所以Frank首先将书按高度顺序排列在书架上.但是Frank发 ...

  10. nltk 之 snowball 提取词干-乾颐堂

    机器学习中很重要的应用场景就是机器自动分类,而分类的关键是词干提取.所以我们要用到snowball.下面说一下snowball 提取词干的两种方法. 两种方法: 方法一: >>> f ...