Java集合框架
一、集合框架概述
1、引入集合框架
在我们的电子宠物系统中,如果想存储多个宠物信息, 可以使用数组来实现。例如,可以定义
一个长度为 50的Dog类型的数组存储多个Dog对象的信息,但是采用数组存在以下一些明显缺陷。
➢数组长度固定不变, 不能很好地适应元素数量动态变化的情况。若要存储大于50个狗狗的
信息,则数组长度不足:若只存储20个狗狗的信息,则造成内存空间浪费。
➢可通过数组名. length 获取数组的长度,却无法直接获取数组中真实存储的狗狗个数。
➢数组采用在内存中分配连续空间的存储方式,根据下标可以快速获取对应狗狗的信息,但
根据狗狗信息查找时效率低下,需要多次比较。在进行频繁插入,删除操作时同样效率
对中的
2、Java集合框架包含的内容
集合框架是为表示和操作集合而规定的一种统一的标准体系结构。 集合框架都包含三大块内容:
对外的接口、接口的实现和对集合运算的算法。
➢接口:表示集合的抽象数据类型在图中以虚线框表示,如Collection. List. Set. Map.
Iterator。
➢实现: 集合框架中接口的具体实现,在图6.1中以实线框表示,粗实线框表示最常用的实
现,如ArrayList. LinkedList. HashMap. HashSet。
➢算法: 在一个实现了某个集合框架中的接口的对象身上完成某种有用的计算的方法,如查
找、排序等。Java提供了进行集合操作的工具类Collections (注意不是Collection, 类似于
Arrays类),它提供了对集合进行排序等多种算法实现。在使用Collections的时候可以查阅
JDK帮助文档。
从图中可以清楚地看出Java集合框架中的两大类接口: Collection 和Map。其中,Collection
又有两个子接口: List和Set。 所以通常说Java集合框架共有三大类接口: List、 Set和Map。 它们的
失同点:都是集合接口,都可以用来存储很多对象。它们的区别如下。
➢Collection 接口存储一组不唯一(允许重复). 无序的对象。
➢Set接口继承Collection接口, 存储一组唯一(不允许重复)、无序的对象。
➢List接口继承Collection接口,存储一组不唯- (允许重复)、 有序(以元素插入的次序来放
置元素,不会重新排列)的对象。
➢Map接口存储一 组成对的键- 值对象,提供key (键) 到value (值) 的映射。Map中的key
不要求有序,不允许重复。value 同样不要求有序,但允许重复。
➢Iterator 接口是负责定义访问和遍历元素的接口。
二、List接口
实现List接口的常用类有ArrayList和LinkedLlist。它们都可以容纳所有类型的对象,包括null.
允许重复,并且都保证元素的存储顺序。
ArrayList对数组进行了封装,实现了长度可变的数组。ArrayList 存储数据的方式和数组相同,
都是在内存中分配连续的空间,如图6. 5所示。它的优点在于遍历元素和随机访问元素的效率比较高
ArrayList 存储方式示意图
LinkedLlist采用链表存储方式,如图6 6所示,优点在于插入、删除元素时效率比较高。它提伯
颈外的 adFirst( ). addLast( ) removeFirst( )和removeLast( )等方法,可以在LinkedList 的首部百
电部进行插入或删除操作。这些方法使得LinkedLlist可被用作堆栈(stack) 或者队列(queue)。
方法名称 | 说明 |
---|---|
boolean add(Object o) | 在列表末尾顺序添加元素,起始索引位置从0开始 |
void add(int index,Object o ) | 在指定的索引位置添加元素,原索引位置及其后面的元素依次后移 |
int size() | 返回列表中的元素个数 |
Object get(int index) | 返回指定索引位置处的元素 |
boolean contains (Object o) | 判断列表中是否存在指定元素 |
boolean remova(Object o) | 从列表删除元素 |
Object remove (int index) | 从列表中删除指定位置元素,起始索引位置从0开始 |
LinkedList的一些特性方法
方法名称 | 说明 |
---|---|
void addFirst(Object o) | 在列表的首部添加元素 |
void addLast(Object o) | 在列表的末尾添加元素 |
Object getFirst() | 返回列表中的第一个元素 |
Object getLast() | 返回列表中的最后一个元素 |
Object removaFirst() | 删除并返回列表中第一个元素 |
Object removeLast() | 删除并返回列表中的最后一个元素 |
三、Map接口
1.HashMap集合类
Mpa接口存储一组成对的键-值对象,提供key到value的映射。Map中key不要求有序,不允许重复,value不要求有序,但允许重复
1、存储方式:key:value
2、实现类:
HashMap:线程不安全,速度快
Hashtable:操作类似HashMap,线程安全
ConcurrentMap:操作类似HashMap,线程安全,
实现安全的方式比hashtable更优—》针对线程安全部分代码做了优化
ashMap,线程安全
ConcurrentMap:操作类似HashMap,线程安全,
实现安全的方式比hashtable更优—》针对线程安全部分代码做了优化
TreeMap:1、对key进行排序;2不能以null为key【二叉树算法】