一、集合概述
java集合框架标准化了程序处理对象组的方式,它是在J2SE 1.2版本时增加的。
在集合框架之前,Java提供了特定的类来存储和管理对象组,如Dictionary、Vector、Stack、Properties。尽管这些类很有用,但是缺少了集中、同一的主题。比如Vector和Properties的使用方式不同,另外早期没有被设计为易扩展、易改造的方式,那么集合框架技术用来解决这些问题的
集合框架满足的设计目标:
1.必须是高性能的
2.必须允许不同类型的集合以类似的方式进行工作,并且具有高度的可操作性
3.集合对于扩展和改造必须是易于实现的
算法是集合机制的另一重要组成部分。算法操作集合,都被定义为Collections类中的静态方法,算法为操作集合提供了标准的方式
与集合框架密切相关的另外一个内容是Iterator接口。称为迭代器。迭代器为访问集合中的元素提供了通用的、标准的方式,每次访问一个元素
二、单列集合基础接口清单
序号 | 接口名称 | 描述 |
1 | Collection | 允许操作一组对象,位于集合层次结构的顶部 |
2 | List | 扩展Collection以处理序列(对象列表) |
3 | Set | 扩展Collection以处理集合,集合中的元素对象必须唯一 |
4 | SorteSet | 扩展Set接口已处理已排序的集合 |
5 | NavigableSet | 扩展SorteSet以基于最接近匹配原则检索元素对象 |
6 | Queue | 扩展Collection以处理特殊类型的列表,这种类型的列表只能从列表顶部删除元素对象 |
7 | Deque | 扩展Queue以处理双端队列 |
三、Collection接口体系图
四、接口
1.定义:Collection接口是最基本的集合接口,它不提供直接的实现,Java SDK提供的类都是继承自Collection的“子接口”如List,Set和Queue。Collection所代表的是一种规则,它所包含的元素都必须遵循一条或者多条规则。如有些允许出现重复元素而有些则不允许重复、有些必须要按照顺序插入而有些则是散列,有些支持排序但是有些则不支持等等
2.接口定义常用方法
序号 | 返回值 | 方法 | 作用 |
---|---|---|---|
1 | boolean | add(E e) | 向集合中添加指定的元素,添加成功返回 true,否则返回false。若实现该接口的集合实现类不允许元素对象重复且需要添加的元素在集合中已存在,则返回false |
2 | boolean | addAll(Collection<? extends E> c) | 将指定集合中的所有元素添加到当前集合,添加成功返回 true,否则返回false |
3 | boolean | contains(Object o) | 检查集合释放包含指定的元素,包含则返回 true,否则返回false |
4 | boolean | containsAll(Collection<?> c) | 检查集合中是否包含指定集合中的所有元素,包含则返回true,否则返回false |
5 | int | hashCode() | 获取指定集合的哈希码值 |
6 | boolean | isEmpty() | 检查集合中是否存在有效元素(对象),如果不存在元素,则返回 true,否则返回false |
7 | Iterator<E> | iterator() | 迭代器方法,返回一个迭代器对象,用于遍历集合中的元素 |
8 | boolean | remove(Object o) | 从集合中删除指定元素的单个实例(如果存在),删除成功返回 true,否则返回false |
9 | boolean | removeAll(Collection<?> c) | 从集合中删除指定集合包含的所有元素,删除成功返回 true,否则返回false |
10 | int | size() | 返集合中的元素数量 |
11 | Object[] | toArray() | 将指定集合中的元素转换成一个数组对象 |
五、List接口
1.定义:List接口继承了Collection接口中的所有方法,同时对其进行的相应的扩展,实现了该接口的集合对象可以存储重复的元素对象
List集合特点
- List接口Collection接口的子接口
- List集合中的元素是有序且可以重复的
- List集合中的每个元素(对象)都有其对应的索引顺序
- List集合中的元素都对应一个整数型的序号记载其在集合中的位置,可根据该序号获取对应元素(对象)索引序号是从0开始
2.接口定义常用方法
序号 | 返回值 | 方法 | 作用 |
---|---|---|---|
1 | boolean | add(E e) | 向集合中添加指定的元素,添加的元素默认添加到该集合的末尾,添加成功返回 true,否则返回false |
2 | boolean | add(int index, E element) | 将指定的element元素添加到集合中的指定位置,在插入点及其后存储的的元素自动后移,添加成功返回 true,否则返回false |
3 | boolean | addAll(int index, Collection<? extends E> c) | 将指定集合c中的所有元素添加到当前集合中的指定位置,在插入点及其后存储的的元素自动后移,添加成功返回 true,否则返回false |
4 | E | get(int index) | 获取集合中指定位置的元素 |
5 | int | indexOf(Object o) | 获取集合中指定元素的第一次出现的索引,如果此列表不包含元素,则返回-1。 |
6 | int | lastIndexOf(Object o) | 获取集合中指定元素的最后一次出现的索引,如果此列表不包含元素,则返回-1 |
7 | ListIterator<E> | listIterator() | 返回集合中元素的迭代器列表对象,该迭代器集合列表从集合的第一个元素开始 |
8 | ListIterator<E> | listIterator(int index) | 返回集合中元素的迭代器列表对象,该迭代器集合列表从集合的指定位置开始 |
9 | E | set(int index, E element) | 将集合中的指定位置的元素对象用指定的元素对象进行替换 |
六、Set接口
Set接口继承了Collection接口中的所有方法,其自身没有进行的相应的扩展,但声明了实现了该接口的集合对象不允许存储重复的元素对象
七、SorteSet接口
1.定义:SortedSet接口继承了Set接口,并且定义了已升序进行排序的方法,该接口除了从Set继承过来的方法外,还定义了如下方法
2.接口定义常用方法
序号 | 返回值 | 方法 | 作用 |
---|---|---|---|
1 | Comparator<? super E> | comparator() | 返回用于对该集合中的元素进行排序的比较器,如果使用自然排序则返回null |
2 | E | first() | 返回集合中已排序后集合的的第一个元素 |
3 | SortedSet<E> | headSet(E toElement) | 返回该集合的部分的视图,其元素严格小于 toElement |
4 | E | last() | 返回集合中当前已排序后集合的最后(最高)元素 |
5 | SortedSet<E> | subSet(E start, E end) | 返回该集合的部分的元素对象集合,其元素的范围为 start (含)—end-1之间的元素组合 |
6 | SortedSet<E> | tailSet(E start) | 返回该集合的大于或等于 start的部分的元素组合 |
八、NavigableSet接口
1.定义:NavigableSet<E>继承了SortedSet接口,并且声明了支持基于最近匹配原则检索元素对象的集合行为
2.接口定义常用方法
序号 | 返回值 | 方法 | 作用 |
---|---|---|---|
1 | E | ceiling(E obj) | 在集合中查找大于等于obj的最小元素,如果检索到就返回对应的元素,否则返回null |
2 | E | floor(E e) | 在集合中查找小于等于obj的最大元素,如果检索到就返回对应的元素,否则返回null |
3 | Iterator<E> | iterator() | 将集合中的元素按照升序返回此集合的迭代器对象 |
4 | Iterator<E> | descendingIterator() | 将集合中的元素按照降序返回此集合的迭代器对象 |
5 | E | higher(E e) | 在集合中查找大于obj的最小元素,如果检索到就返回对应的元素,否则返回null |
6 | E | lower(E e) | 在集合中查找小于obj的最大元素,如果检索到就返回对应的元素,否则返回null |
7 | E | pollFirst() | 检索并删除第一个元素,如果此集合为空,则返回 null |
8 | E | pollLast() | 检索并删除最后一个元素,如果此集合为空,则返回 null |
九、Queue接口
1.定义:Queue<E>继承了Collection接口中的所有方法,并声明了队列的行为,队列通常是先进先出的列表
2.接口定义常用方法
序号 | 返回值 | 方法 | 作用 |
---|---|---|---|
1 | E | element() | 获取队列头部的元素对象,不移除元素,如果队列为空,则抛出异常 |
2 | boolean | add(E e) | 向队列中插入指定的元素,如果插入成功,则返回true,队列空间已满无法插入时抛出异常 |
3 | E | offer(E e) | 向队列中插入指定的元素,如果插入成功,则返回true,否则返回flase |
4 | E | peek() | 获取队列头部的元素对象,不移除元素,如果队列为空,则返回null |
5 | E | poll() | 获取队列头部的元素对象,且从队列中移除元素,如果队列为空,则返回null |
6 | E | remove() | 移除队列头部的元素,并返回移除的原始对象,如果队列为空,则抛出异常 |
十、Deque接口
1.定义:Deque<E> 继承了Collection接口中的所有方法,并声明了双端队列的行为,双端队列可以像标准队列先进先出,也可以项堆栈一样后进先出
2.接口定义常用方法
序号 | 返回值 | 方法 | 作用 |
---|---|---|---|
1 | boolean | add(E e) | 将指定的元素插入双端队列的尾部),如果它是立即可行且不会违反容量限制,插入成功返回 true,如果当前队列已无可用空间,则抛出异常 |
2 | void | addFirst(E e) | 插入此双端队列的前面,如果它是立即可行且不会违反容量限制,抛出一个指定的元素 IllegalStateException 如果当前没有空间可用。 |
3 | void | addLast(E e) | 在插入如果它是立即可行且不会违反容量限制,抛出此双端队列的末尾指定元素 IllegalStateException 如果当前没有空间可用 |
4 | boolean | contains(Object o) | 如果此deque包含指定的元素,则返回 true |
5 | Iterator<E> | descendingIterator() | 以相反的顺序返回此deque中的元素的迭代器。 |
6 | E | element() | 检索但不删除由此deque表示的队列的头部(换句话说,该deque的第一个元素)。 |
7 | E | getFirst() | 检索,但不删除,这个deque的第一个元素 |
8 | E | getLast() | 检索,但不删除,这个deque的最后一个元素 |
9 | Iterator<E> | iterator() | 以正确的顺序返回此deque中的元素的迭代器。 |
10 | boolean | offer | 将指定的元素插入由此deque表示的队列(换句话说,在该deque的尾部),如果可以立即执行,而不违反容量限制, true 在成功时 false 如果当前没有可用空间,则返回false |
11 | boolean | offerFirst | 在此deque的前面插入指定的元素,除非它会违反容量限制 |
12 | boolean | offerLast | 在此deque的末尾插入指定的元素,除非它会违反容量限制 |
13 | E | peek | 检索但不删除由此deque表示的队列的头部(换句话说,此deque的第一个元素),如果此deque为空,则返回 null |
14 | E | peekFirst | 检索,但不删除,此deque的第一个元素,或返回 null 如果这个deque是空的 |
15 | E | peekLast() | 检索但不删除此deque的最后一个元素,如果此deque为空,则返回 null |
16 | E | poll() | 检索并删除由此deque(换句话说,此deque的第一个元素)表示的队列的 null如果此deque为空,则返回 null |
17 | E | pollFirst() | 检索并删除此deque的第一个元素,如果此deque为空,则返回 null` |
18 | E | pollLast() | 检索并删除此deque的最后一个元素,如果此deque为空,则返回 null` 。 |
19 | E | pop() | 从这个deque表示的堆栈中弹出一个元素。 |
20 | void | push(E e) | 将元素推送到由此deque表示的堆栈(换句话说,在此deque的头部),如果可以立即执行此操作而不违反容量限制,则抛出 IllegalStateException 如果当前没有可用空间)。 |
21 | E | remove() | 检索并删除由此deque表示的队列的头(换句话说,该deque的第一个元素)。 |
22 | boolean | remove(Object o) | 从此deque中删除指定元素的第一个出现 |
23 | E | removeFirst() | 检索并删除此deque的第一个元素 |
24 | boolean | removeFirstOccurrence(Object o) | 从此deque中删除指定元素的第一个出现 |
25 | E | removeLast() | 检索并删除此deque的最后一个元素 |
26 | boolean | removeLastOccurrence(Object o) | 从此deque中删除指定元素的最后一次出现 |
27 | int | size() | 返回此deque中的元素数 |