Java集合详解--什么是集合
Posted TonyW92
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java集合详解--什么是集合相关的知识,希望对你有一定的参考价值。
什么是集合
集合类存放于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接口和它的实现类。
以上是关于Java集合详解--什么是集合的主要内容,如果未能解决你的问题,请参考以下文章