目录
一、Collection及其子类示意图
二、Set
1、HashSet
2、LinkedHashSet
3、TreeSet
三、Queue
1、ArrayDeque
2、PriorityQueue
三、List
1、ArrayList
2、LinkedList
3、Vector
4、Stack
一、Collection及其子类示意图
示意图说明:
- 虚线方框表示该类一个接口,实线方框表示的是实现类;
- 实线箭头表示的是继承至某一个类,虚线箭头表示的是实现某一个接口;
- 实现类中列出了常用方法极其返回值类型,具体说明如下所示。
- HashSet基于HashMap来实现的,是一个不允许有重复元素的集合;
- HashSet允许有null值;
- HashSet是无序的,即不会记录插入的顺序;
- HashSet不是线程安全的;
- HashSet实现了Set接口。
接口名 | 返回值类型 | 说明 |
---|---|---|
add(E e) | boolean | 往集合中添加元素e |
remove(Object o) | boolean | 从集合中移除元素o |
contains(Object o) | boolean | 判断集合中是否存在某元素 |
size() | int | 获取集合的大小 |
isEmpty() | boolean | 判断集合是否为空 |
clear() | void | 清除集合中的所有元素 |
- LinkedHashSet根据hashCode值来决定元素的存储位置;
- LinkedHashSet使用了双向链表维护,所以是有序的,可以保持元素的插入顺序;
- LinkedHashSet元素不可重复;
- LinkedHashSet是非线程安全的。
接口名 | 返回值类型 | 说明 |
add(E e) | boolean | 往集合中添加元素 |
remove(Object o) | boolean | 从集合中移除某元素 |
contains(Object o) | boolean | 判断集合中是否存在某元素 |
size() | int | 获取集合的大小 |
isEmpty() | boolean | 判断集合是否为空 |
clear() | void | 清楚集合中的元素 |
- TreeSet是一个有序没有重复元素的Set集合;
- TreeSet中key不能为空,value可以为null
- TreeSet具有排序功能,支持2种排序方式:自然排序或根据创建TreeSet时提供的Comparator进行排序,取决于使用的构造方法。
接口名 | 返回值类型 | 说明 |
add(E e) | boolean | 往集合中添加元素 |
addAll(Collection extends E> c) | boolean | 通过集合添加元素 |
remove(Object o) | boolean | 从集合中删除元素 |
contains(Object o) | boolean | 查找集合中是否包含某元素 |
size() | int | 返回集合的大小 |
isEmpty() | boolean | 判断集合是否为空 |
clear() | void | 清除集合中的所有元素 |
first() | E | 获取集合的一个元素 |
last() | E | 获取集合的最后一个元素 |
floor(E e) | E | 返回小于或等于给定键值的最大键值 |
ceiling(E e) | E | 返回大于或等于给定键值的最小键值 |
lower(E e) | E | 返回严格小于给定键值的最大键值 |
higher(E e) | E | 返回严格大于给定键值的最小键值 |
pollFirst() | E | 获取第一个值并移除第一个值 |
pollLast() | E | 获取这个值并移除这个值 |
spliterator() | Spliterator | 拆分set元素,并逐个迭代他Queue |
-
ArrayDeque是Deque接口的一个实现,使用了可变数组,无容量大小限制,容量按需增长;
-
非线程安全队列,无需同步策略,不支持多线程安全访问;
-
当作用于栈时,性能优于Stack;当作用于队列时,性能优于LinkedList;
-
两端都可以 *** 作;
-
不能存储null;
-
支持双向迭代器遍历。
接口名 | 返回值类型 | 说明 |
---|---|---|
添加元素 | ||
addFirst(E e) | void | 在数组前面添加元素 |
addLast(E e) | void | 在数组后面添加元素 |
offerFirst(E e) | boolean | 在数组前添加元素,并返回是否添加成功 |
offerLast(E e) | boolean | 在数组后添加元素,并返回是否添加成功 |
删除元素 | ||
removeFirst() | E | 删除数组第一个元素,并返回删除元素的值,如果元素为null,将抛出异常 |
removeLast() | E | 删除数组最后一个元素,并返回删除元素的值,如果元素为null,将抛出异常 |
pollFirst() | E | 删除第一个元素,并返回删除的元素的值,如果元素为null,将返回null |
pollLast() | E | 删除最后一个元素,并返回删除元素的值,如果元素为null,将返回null |
removeFirstOccurrence(Object o) | boolean | 删除第一次出现的指定元素 |
removeLastOccurrence(Object o) | boolean | 删除最后一次出现的指定元素 |
获取元素 | ||
getFirst() | E | 获取第一个元素,如果没有将抛出异常 |
getLast() | E | 获取最后一个元素,如果没有将抛出异常 |
peekFirst() | E | 获取第一个元素 |
peekLast() | E | 获取最后一个元素 |
队列 *** 作 | ||
add(E e) | boolean | 在队列的尾部添加一个元素(调用addLast()) |
offer(E e) | boolean | 在队列的尾部添加一个元素,并返回是否成功(调用offerLast()) |
remove() | E | 删除队列中第一个元素,并返回该元素的值,如果元素为null,将抛出异常(调用的removeFirst()) |
poll() | E | 删除队列中的第一个元素(调用的是pollFirst()) |
element() | E | 获取第一个元素(调用的getFirst()) |
peek() | E | 获取第一个元素(调用的是peekFirst()) |
栈 *** 作 | ||
push(E e) | void | 入栈(调用的是addFirst()) |
pop() | E | 出栈(调用的是removeFirst()) |
其余集合方法 | ||
size() | int | 返回集合中元素的个数 |
isEmpty() | boolean | 判断集合是否为空 |
iterator() | Iterator | 迭代器,从前往后迭代 |
descendingIterator() | Iterator | 迭代器,从后往前迭代 |
contains(Object o) | boolean | 判断队列中是否出现某元素 |
toArray() | Object[] | 将集合转化为数组 |
clear() | void | 清空队列 |
clone() | ArrayDeque | 克隆某集合 |
- 优先级队列在插入的时候,数据按关键词有序排列,插入新数据的时候,会自动插入到合适的位置保证队列有序(升序或降序)。
- 使用二叉小顶(大顶)堆来实现。
接口名称 | 返回值类型 | 说明 |
---|---|---|
add(E e) | boolean | 往集合中添加一个元素,不成功会抛出异常 |
offer(E e) | boolean | 往集合中添加元素,如果插入元素为null将抛出异常 |
peek() | E | 返回集合第一个元素 |
remove(Object o) | boolean | 移除集合中的指定元素 |
poll() | E | 删除一个元素,并返回删除的元素 |
contains(Object o) | boolean | 判断是否包含某元素 |
toArray() | Object[] | 转换成数组 |
size() | int | 返回集合的大小 |
clear() | void | 清空集合 |
indexOf(Object o) | int | 查询某个对象的索引 |
- ArrayList是通过数组实现的,是可变长的数组,与普通数组得区别就是它没有固定的大小限制(动态数组);
- ArrayList不是线程安全的;
- ArrayList数组的索引值从0开始。
接口名 | 返回值类型 | 说明 |
---|---|---|
add(E e) | boolean | 在集合尾部插入元素 |
add(int index, E element) | void | 在指定位置插入元素 |
get(int index) | E | 返回集合中指定下标的元素 |
set(int index, E element) | E | 修改集合中指定下标的元素值 |
remove(int index) | E | 删除集合中指定位置的元素 |
remove(Object o) | boolean | 删除集合中第一次出现的对象o |
size() | int | 获得集合的大小 |
isEmpty() | boolean | 判断集合是否为空 |
contains(Object o) | boolean | 判断集合是否包含某元素 |
indexOf(Object o) | int | 返回第一次出现的指定元素的下标,不存在则返回-1 |
lastIndexOf(Object o) | int | 返回最后一次出现的指定元素的下标 |
toArray() | Object[] | 将集合转化为数组 |
clear() | void | 清空集合中的元素 |
- LinkedList是基于双向循环链表实现的,除了可以当作链表 *** 作外,它还可以当作栈、队列和双端队列来使用;
- LinkedList是非线程安全的,只在单线程下适合使用;
- LinkedList的底层是通过链表来实现的,因此它的随机访问速度比较差,但插入删除的速度很快。
- 链表可以分为单向链表、双向链表以及循环链表。
接口名 | 返回值类型 | 说明 |
---|---|---|
addFirst(E e) | void | 在集合首添加一个指定的元素 |
addLast(E e) | void | 在集合尾部添加一个指定的元素 |
add(E e) | boolean | 在集合尾部添加一个指定元素 |
add(int index, E element) | void | 在指定索引处添加指定元素 |
getFirst() | E | 返回集合中的第一个元素,如果集合为空将抛出异常 |
getLast() | E | 返回集合中的最后一个元素,如果集合为空将抛出异常 |
get(int index) | E | 获得指定索引的元素 |
set(int index,E element) | E | 修改指定索引位置的元素 |
removeFirst() | E | 移除并返回集合的第一个元素 |
removeLast() | E | 移除并返回集合的最后一个元素 |
remove(Object o) | boolean | 移除集合中的指定元素 |
remove(int index) | E | 移除指定索引处的元素 |
contains(Object o) | boolean | 判断集合中是否包含某元素 |
size() | int | 返回集合的大小 |
clear() | void | 清除集合中的所有元素 |
indexOf(Object o) | int | 返回指定元素第一次出现时的索引值 |
lastIndexOf(Object o) | int | 返回指定元素最后一次出现的索引值 |
队列 *** 作 | ||
peek() | E | 获取队首元素,如果队列为空,则返回null |
element() | E | 获取队首的元素 |
poll() | E | 获取并移除队首元素,如果队列为空则返回空 |
remove() | E | 移除队首元素(调用的是removeFirst()) |
offer(E e) | boolean | 在队尾添加元素 |
双端队列 *** 作 | ||
offerFirst(E e) | boolean | 在队首添加元素 |
offerLast(E e) | boolean | 在队尾添加元素 |
peekFirst() | E | 获取队首元素 |
peekLast() | E | 获取队尾元素 |
pollFirst() | E | 获取并移除队首元素 |
pollLast() | E | 获取并移除队尾元素 |
栈 *** 作 | ||
push(E e) | void | 将元素压入栈(调用的是addFirst()) |
pop() | E | 元素出栈(调用的是removeFirst()) |
- Vector可实现自动增长的对象数组,支持相关的添加、删除、修改、遍历等功能;
- Vector提供了随机访问的功能;
- 与ArrayList不同,Vector中的 *** 作是线程安全的。
接口名 | 返回值类型 | 说明 |
---|---|---|
get(int index) | E | 获得指定位置的元素 |
set(int index, E element) | E | 修改指定位置的元素 |
add(int index, E element) | void | 在指定位置添加元素 |
remove(int index) | E | 移除指定位置的元素 |
addElement(E obj) | void | 在集合末尾插入元素 |
insertElementAt(E obj, int index) | void | 在指定位置插入元素 |
elementAt(int index) | E | 返回指定元素的下标 |
firstElement() | E | 返回集合的第一个元素 |
lastElement() | E | 返回集合的最后一个元素 |
setElementAt(E obj, int index) | void | 修改指定位置的元素 |
removeElementAt(int index) | void | 移除指定位置的元素 |
removeElement(Object obj) | boolean | 移除指定元素 |
removeAllElements() | void | 移除集合中的所有元素 |
size() | int | 返回集合的大小 |
isEmpty() | boolean | 判断集合是否为空 |
contains(Object o) | boolean | 判断集合是否包含某元素 |
indexOf(Object o) | int | 返回指定元素的下标 |
lastIndexOf(Object o) | int | 返回某元素最后一次出现的下标 |
toArray() | Object[] | 将集合转化成数组 |
toSting() | String | 将集合转化成字符串 |
clear() | void | 清空集合中的元素 |
- 实现了一个标准的先进后出的栈
接口名称 | 返回值类型 | 说明 |
---|---|---|
push(E item) | E | 入栈 |
pop() | E | 出栈 |
peek() | E | 返回栈顶元素 |
empty() | boolean | 判断栈是否为空 |
search(Object o) | int | 在栈中查找元素 |
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)