记录一下自己在蓝桥云课里的学习过程,每天进步一点点
目录
一、为什么要用集合?
之前用数组可以存储多个数据类型相同的元素,但面对频繁增加、删除、修改元素的要求以及动态扩容要求时显得捉襟见肘。
1.Java 语言中的数组长度是固定的,如果数组长度设置小了,不能满足程序需求,并且容易造成数组越界等异常的发生;如果数组长度设置大了,又会造成空间浪费。
2.无法通过数组对象直接的获取真实对象的数量。因为数组提供的 length 属性是获取数组的长度,而不是数组中实际存放有用信息的个数。
3.数组元素在内存空间中是连续存放的,这样如果在数组中删除一个元素,为了保持数组内数据元素的连续性,被删除之后的数组元素全部要前移一位,但这种元素的移动是比较消耗系统资源的
为此,JDK 提供了一套“集合”框架,这套框架是对常见数据结构的实现,不仅可存储数据,还提供了丰富的访问和处理数据的操作
二、有那些集合?
Java 集合框架支持两种类型的容器:一种是为了存储一个元素集合,简称为集合(collection);另一种是为了存储键/值对,称为映射(map,或称图)
1.collection家族:
Collection 接口主要有三个子接口,分别是 Set 接口、List 接口和 Queue 接口,下面简要介绍这三个接口。
-
Set 接口
Set 实例用于存储一组不重复的元素。
-
List 接口
List 实例是一个有序集合。程序员可对 List 中每个元素的位置进行精确控制,可以根据索引来访问元素,此外 List 中的元素是可以重复的。
-
Queue 接口
Queue 中的元素遵循先进先出的规则,是对数据结构“队列”的实现。
2.Map家族:
Map 接口和 Collection 接口的本质区别在于,Collection 接口里存放的是一系列单值对象,而 Map 接口里存放的是一系列key-value 对
对象。Map 中的 key 不能重复,每个 key 最多只能映射到一个值,HashMap 和 Hashtable 是 Map 接口的实现类。