第 10 章 Java 中的集合类
Java 用集合类来容纳不同种类的数据,这种容纳是建立在未知的 基础上,即 Java 要用有限种类的集合类,来容纳无限种类的数据 对象。
分类: Java 的集合类可以分为三类:集、列表和映射。
一:集( Set ):和数学上的 “ 集合 ” 概念相对应,是最简单的一 种集合。
特点:
①Set 集合中不区分元素的顺序,因此也就不记录元素的加入顺序。
②Set 集合中不包含重复元素,即任意的两个元素 e1 和 e2 都有 e1.equals(e2)=false ,并且最多有一个 null 元素。
二:列表( List )
特点:
①List 列表区分元素的顺序,即 List 列表能够精确的控制每个 元素插入的位置,用户能够使用索引(元素在 List 中的位置) 来访问 List 中的元素。和 Set 集合的不同, List 允许包含重复 元素。
三:映射:保存的是 “ 键 - 值 ” 对信息,即 Map 中存储的每个元素 都包括起标识作用的 “ 键 ” 和该元素的 “ 值 ” 两部分,查找数据 时不需提供相应的 “ 键 ” ,才能查找到该 “ 键 ” 所映射的 “ 值 ” 。 因此, Map 集合中不能包含重复的 “ 键 ” ,并且每个 “ 键 ” 最多 只能映射一个值。
java.util.List 接口描述的是列表结构,允许程序员对列表元素的插 入位置进行精确控制,并增加了根据元素索引来访问元素、搜索 元素等功能。在继承父接口 Collection 的基础之上, List 接口新增 的相应方法:
void add(int index, E element) boolean add(E e)
E remove(int index) boolean remove(Object o)
E get(int index) ü int size() ü int indexOf(Object obj)
List<E> subList(int fromIndex, int toIndex)
void clear()
Java.util.List 接口的实现类有多个,分别体现了列表的不同分化形式。 ①ArrayList
②Vector
Vector
类可以实现可增长的对象数组。与数组一样,它包含可以使用整数索引进行访问的组件。但是,Vector
的大小可以根据需要增大或缩小,以适应创建
Vector
后进行添加或移除项的操作。
③ Stack
Stack
类表示后进先出(LIFO)的对象堆栈。它通过五个操作对类 Vector 进行了扩展 ,允许将向量视为堆栈。它提供了通常的
push 和 pop 操作,以及取堆栈顶点的 peek 方法、测试堆栈是否为空的 empty 方法、在堆栈中查找项并确定到堆栈顶距离的
search 方法。
首次创建堆栈时,它不包含项。
④LinkedList
List 接口的链接列表实现。实现所有可选的列表操作,并且允许所有元素(包括 null)。除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾 get、remove 和 insert 元素提供了统一的命名方法。这些操作允许将链接列表用作堆栈、队列或双端队列。