欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java集合类型(java集合类详解和使用)

程序员文章站 2023-11-16 22:54:28
在编程时,可以使用数组来保存多个对象,但数组长度不可变化,一旦在初始化数组时指定了数组长度,这个数组长度就是不可变的。如果需要保存数量变化的数据,数组就有点无能为力了。而且数组无法保存具有映射关系的数...

在编程时,可以使用数组来保存多个对象,但数组长度不可变化,一旦在初始化数组时指定了数组长度,这个数组长度就是不可变的。如果需要保存数量变化的数据,数组就有点无能为力了。而且数组无法保存具有映射关系的数据,如成绩表为语文——79,数学——80,这种数据看上去像两个数组,但这两个数组的元素之间有一定的关联关系。

为了保存数量不确定的数据,以及保存具有映射关系的数据(也被称为关联数组),java提供了集合类。集合类主要负责保存、盛装其他数据,因此集合类也被称为容器类。java所有的集合类都位于java.util包下,提供了一个表示和操作对象集合的统一构架,包含大量集合接口,以及这些接口的实现类和操作它们的算法。

集合类和数组不一样,数组元素既可以是基本类型的值,也可以是对象(实际上保存的是对象的引用变量),而集合里只能保存对象(实际上只是保存对象的引用变量,但通常习惯上认为集合里保存的是对象)。

java集合类型分为collection和map,它们是java集合的根接口,这两个接口又包含了一些子接口或实现类。图1和图2分别为collection和map的子接口及其实现类。

java集合类型(java集合类详解和使用)

map接口结构

java集合类型(java集合类详解和使用)

在图1和图2中,黄色块为集合的接口,蓝色块为集合的实现类。表1介绍了这些接口的作用。

表1java集合接口的作用

接口名称 作 用
iterator 接口 集合的输出接口,主要用于遍历输出(即迭代访问)collection 集合中的元素,iterator 对象被称之为迭代器。迭代器接口是集合接口的父接口,实现类实现 collection 时就必须实现 iterator 接口。
collection 接口 是 list、set 和 queue 的父接口,是存放一组单值的最大接口。所谓的单值是指集合中的每个元素都是一个对象。一般很少直接使用此接口直接操作。
queue 接口 queue 是 java 提供的队列实现,有点类似于 list。
dueue 接口 是 queue 的一个子接口,为双向队列。
list 接口 是最常用的接口。是有序集合,允许有相同的元素。使用 list 能够精确地控制每个元素插入的位置,用户能够使用索引(元素在 list 中的位置,类似于数组下标)来访问 list 中的元素,与数组类似。
set 接口 不能包含重复的元素。
map 接口 是存放一对值的最大接口,即接口中的每个元素都是一对,以 key➡value 的形式保存。

对于set、list、queue和map这4种集合,java最常用的实现类分别是hashset、treeset、arraylist、arraydueue、linkedlist和hashmap、treemap等。表2介绍了集合中这些常用的实现类。

表2java集合实现类的作用

类名称 作用
hashset 为优化査询速度而设计的 set。它是基于 hashmap 实现的,hashset 底层使用 hashmap 来保存所有元素,实现比较简单
treeset 实现了 set 接口,是一个有序的 set,这样就能从 set 里面提取一个有序序列
arraylist 一个用数组实现的 list,能进行快速的随机访问,效率高而且实现了可变大小的数组
arraydueue 是一个基于数组实现的双端队列,按“先进先出”的方式操作集合元素
linkedlist 对顺序访问进行了优化,但随机访问的速度相对较慢。此外它还有 addfirst()、addlast()、getfirst()、getlast()、removefirst() 和 removelast() 等方法,能把它当成栈(stack)或队列(queue)来用
hsahmap 按哈希算法来存取键对象
treemap 可以对键对象进行排序