Java集合干货系列-集合总体大纲

前言

Java集合是java提供的工具包,包含了常用的数据结构:集合、链表、队列、栈、数组、映射等。Java集合工具包位置是java.util.*
Java集合主要可以划分为4个部分:List列表、Set集合、Map映射、工具类(Iterator迭代器、Enumeration枚举类、Arrays和Collections)。
Java集合工具包框架图(如下):

正文

看上面的框架图,先抓住它的主干,即Collection和Map。

Collection接口、子接口以及实现类

Collection接口

  • 是List、Set和Queue接口的父接口
  • 定义了可用于操作List、Set和Queue的方法-增删改查

Collection接口API中定义的方法如下:

List接口

  • List是元素有序并且可以重复的集合,被称为序列
  • List可以精确的控制每个元素的插入位置,或删除某个位置元素
  • List接口的常用子类:
    ArrayList
    LinkedList
    Vector
    Stack

下图是List的JDK源码UML图。

Set接口

  • Set接口中不能加入重复元素,无序
  • Set接口常用子类:
    散列存放:HashSet
    有序存放:TreeSet

下图是Set的JDK源码UML图。

Map和HashMap

Map接口

  • Map提供了一种映射关系,其中的元素是以键值对(key-value)的形式存储的,能够实现根据key快速查找value
  • Map中的键值对以Entry类型的对象实例形式存在
  • 键(key值)不可重复,value值可以
  • 每个建最多只能映射到一个值
  • Map接口提供了分别返回key值集合、value值集合以及Entry(键值对)集合的方法
  • Map支持泛型,形式如:Map

HashMap类

  • HashMap是Map的一个重要实现类,也是最常用,基于哈希表实现
  • HashMap中的Entry对象是无序排列的
  • Key值和Value值都可以为null,但是一个HashMap只能有一个key值为null的映射(key值不可重复)

下图是Map的JDK源码UML图

Comparable和Comparator

Comparable接口——可比较的

  • 实现该接口表示:这个类的实例可以比较大小,可以进行自然排序
  • 定义了默认的比较规则
  • 其实现类需要实现compareTo()方法
  • compareTo()方法返回正数表示大,负数表示小0表示相等

Comparator接口——比较工具接口

  • 用于定义临时比较规则,而不是默认比较规则
  • 其实现类需要实现compare()方法
  • Comparable和Comparator都是Java集合框架的成员

Iterator接口

  1. 集合输出的标准操作
    标准做法,使用Iterator接口
  2. 操作原理:
    Iterator是专门的迭代输出接口,迭代输出就是将元素一个个进行判断,判断其是否有内容,如果有内容则把内容取出。

总结

集合的作用

  • 在类的内部,对数据进行组织;
  • 简单而快速的搜索大数量的条目;
  • 有的集合接口,提供了一系列排列有序的元素,并且可以在序列中间快速的插入或者删除有关元素;
  • 有的集合接口,提供了映射关系,可以通过关键字(key)去快速查找对应的唯一对象,而这个关键字额可以是任意类型。

与数组的对比—————为何选择集合而不是数组

  • 数组的长度固定,集合长度可变
  • 数组只能通过下标访问元素,类型固定,而有的集合可以通过任意类型查找所映射的具体对象。

整理的集合框架思维导图

个人整理的Java集合框架思维导图,动态维护。导出的图片无法查看备注的一些信息,所以需要源文件的童鞋可以关注我个人主页上的公众号,回复Java集合框架即可获取源文件。

博主最近发起了《嘟爷电子书互惠组》计划,里面包含了《精通Spring4.X企业应用开发实战》、《MyBatis从入门到精通__刘增辉》相关书籍在内的至少272本Java相关的电子书,也有博主花钱买的电子书。可谓新手必备之物,详情可前往书单末尾查看: Java后端2018书单推荐

文章目录
  1. 1. 前言
  2. 2. 正文
    1. 2.1. Collection接口、子接口以及实现类
    2. 2.2. List接口
    3. 2.3. Set接口
    4. 2.4. Map和HashMap
    5. 2.5. Comparable和Comparator
    6. 2.6. Iterator接口
  3. 3. 总结
    1. 3.1. 集合的作用
    2. 3.2. 与数组的对比—————为何选择集合而不是数组
    3. 3.3. 整理的集合框架思维导图
|