什么是集合


集合类存放于java.util包中。
集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(reference)。
集合类型主要有3种:set(集)、list(列表)和map(映射)。

通俗的说,集合就是一个放数据的容器,准确的说是放数据对象引用的容器。




有哪些集合


这里写图片描述


理解这张图之前我们需要补充一点简单的UML类图符号知识。

UML类图中描述关系的一共有6种关系



依赖

简单理解就是局部变量和外部类的关系

这里写图片描述


关联

    他体现的是两个类、或者类与接口之间语义级别的一种强依赖关系
    简单理解就是成员变量


这里写图片描述

聚合

        聚合是关联关系的一种特例,他体现的是整体与部分、拥有的关系,即has-a的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享;比如计算机与CPU、公司与员工的关系等;表现在代码层面,和关联关系是一致的,只能从语义级别来区分

这里写图片描述


合成

    组合也是关联关系的一种特例,他体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束;比如你和你的大脑;表现在代码层面,和关联关系是一致的,只能从语义级别来区分;
    简单来说和聚合差不多,只不过外部类需要和内部成员变量保持同一个生命周期,举个不是很恰当的例子,有点像Activity和内部的Fragment关系,当Activity销毁的时候,Fragment跟着一起销毁

这里写图片描述


实现

    简单理解就是接口和实现类的关系

这里写图片描述


泛化

    简单理解就是父类和子类之间的关系,继承就是泛化的一种

这里写图片描述

理解了UML类图之后,我们就能从上图中分析得知

集合主要分为Collection和Map2个接口
Collection又分别被List和Set继承
List被AbstractList实现,然后分为3个子类,ArrayList,LinkList和Vector
Set被AbstractSet实现,又分为HashSet和TreeSet
而Map衍生出的集合分为HashMap,HashTable和TreeMap

画一个树状图的话,就如下显示了

Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
├HashSet
└TreesSet
Map
├Hashtable
├HashMap
└WeakHashMap




Collection接口介绍


这里写图片描述

首先看下collection的官方注释
Collection作用就是规定了一个集合有哪些基本的操作

这里写图片描述


这里主要是插入数据,清空数据,是否包含,是否相等,集合里的数据个数和转化成数组这几种操作

于Collection接口相关还有一个抽象类AbstractCollection

这里写图片描述

AbstractCollection是一个抽象类,实现了Collection接口的部分功能,在部分书籍中称这种抽象类继承接口,并且实现部分功能的为抽象骨架类。抽象类实现了一些最基本的通用操作,把复杂的和业务相关的延迟到子类实现。

在AbstractCollection中,主要实现了contains(), isEmpty(), toArray(), remove(), clear() 这几个操作。有兴趣的同学可以自行研究下,逻辑都比较简单。




总结


在本章中主要介绍了什么是集合,集合分为哪些类型还有UML类图的简单介绍。在下一章中会介绍List接口和它的实现类。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐