Java集合类初探

时间:2020-07-11 09:59:54   收藏:0   阅读:80

目录

概述

??Java中基本的常用的集合类,主要包含:

这几种类型的继承关系如图: 图片引自——Collection 和 Map的继承体系
技术图片
其中 List、Queue 和 Set 继承自 Collection 接口,这三种集合的结构都比较简单,都是普通的元素的集合,而 Map 相对复杂一点,是键值对(key-value)的结构。

Iterable和Iterator

技术图片
技术图片

Iterable

??Iterable 接口是 Collection 接口的“超类”,也就是说 Iterable 接口是 List、Set、Queue 这类简单集合的顶级接口,看下 Iterable 接口有些啥:
技术图片
Iterable 接口包含三个方法:

Iterable 接口的 forEach() 和 spliterator() 方法是用 default 关键字修饰的,接口里包含了方法的默认实现。

Iterator

??Iterator 也是一个接口,用于集合的遍历:
技术图片

Collection

技术图片
??Collection 接口包含了集合的基本的增删查操作。既然是集合,那么以下基本方法是非常必要的:

为了增加可用性,又加多了几个方法:

List

技术图片
??List 中文译作“清单、列表”,List 是有序的,是按照一定的顺序来存储元素的,既然是有序的集合,就应该可以通过“游标”来进行访问,因此,List 在 Collection 的基础上添加了通过游标访问元素,或通过元素获取游标的方法:

除此之外,List 还加上了 Collection 没有的“改”操作,实现了集合的“增删查改”:

因为 List 是有序集合,因此给 List 加上排序操作是可取的:

在List接口中有一个 “ListIerator()”的方法,该方法返回一个 ListIterator 对象。
技术图片
ListIterator 继承了 Iterator 接口,提供了 previous 操作,以及与游标相关的 nextIndex() 和 previousIndex()。

Queue

技术图片
??Queue(队列)是一种特殊的线性表,有的时候我们会因为业务需求,需要一个“规定容量的Queue”,这时,如果队列满了却又要添加元素,该采取怎样的策略,或者队列为空时调用remove该如何处理,这是需要考虑的。Queue 继承了 Collection,又提供了几个自己的方法:

Set

技术图片
??Set 中文是“一组、一套”的意思。与 List 相比,Set 没有 List 的“列表、清单”的“列”的语义。Set 是无序的。 Set 与 Collection 在语义以及属性上最为接近,Set 继承了 Collection 的方法,没有自己新添加的方法,如下所示:
技术图片
??
Set 是没有 List 的 Index 的概念的,List 可以用 index 唯一确定一个元素,Map 可以用 key 唯一确定一个元素,而 Set 只能靠自身来唯一确定一个元素,所以 Set 里面的元素是不能重复的。正因为 Set 这一特性,可以使用 Set 给集合去重。

Map

??在词典中,Map 作动词时是“映射”的意思,key-value,key 映射到 value,可以通过 key 来获取 value。Map 和 Iterable 一样是顶级接口。Map 接口 UML 图如下:
技术图片
虽然 Map 是一个顶级接口,但是 Map 和 Set、List、Queue应该是同一层级的接口,它们的方法很多是类似的(功能上)。
基本的增删查改:

键和值的遍历:

其它的方法:

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!