2.java.util.Collection
public interface Collection<E>
extends Iterable<E>
Collection 接口继承了 Iterable
接口。也就意味着,实现Collection 接口的类也间接实现了 Iterable
接口,也就是说它们都能作为 for-each-loop 的循环对象。
Collection 是集合层次结构中的根接口。集合表示一组对象,对象称为集合的元素。有些集合允许重复元素,有些则不允许。 有些是有序的,有些是无序的(不保证顺序)
方法名 | 返回值 | 描述 |
---|---|---|
add(E e) | boolean | 添加元素 |
addAll(Collection<? extends E> c) | boolean | 将集合c中的所有元素添加到此集合中 |
clear() | void | 清除所有元素 |
contains(Object o) | boolean | 集合中是否包含指定元素 |
containsAll(Collection<?> c) | boolean | 集合是否包含指定集合中的所有元素 |
isEmpty() | boolean | 集合是否为空 |
iterator() | Iterator | 返回集合的迭代器 |
remove(Object o) | boolean | 删除集合中的某个元素 |
removeAll(Collection<?> c) | boolean | 删除集合中与指定集合中相同的所有元素 |
retainAll(Collection<?> c) | boolean | 保留集合中与指定集合中相同的元素 |
size() | int | 返回集合中的元素数 |
toArray() | Object[] | 返回包含集合中所有元素的数组 |
Collection
接口实现的类包括常见的 ArrayList
、LinkedList
、HashSet
、TreeSet
、LinkedHashSet
等。
2.1Queue
(队列)
public interface Queue<E>
extends Collection<E>
Queue
继承自Collection
,用于表示队列一种(先进先出)的数据结构,除了基本的 Collection 操作之外,队列还提供额外的插入,提取和检查操作。不可以存null、不允许包含重复元素。
下面是常用的Queue接口方法及其描述:
方法名 | 返回值类型 | 描述 |
---|---|---|
add(E e) | boolean | 将指定元素插入此队列 。如果队列已满,则会抛出IllegalStateException 异常 |
offer(E e) | boolean | 将指定元素插入此队列 。 如果队列已满,则会返回false |
remove() | E | 检索并删除此队列的头部 。如果队列为空,则会抛出NoSuchElementException 异常 |
poll() | E | 检索并删除此队列的头部,如果此队列为空,则返回null |
element() | E | 检索但不删除此队列的头部 。如果队列为空,则会抛出NoSuchElementException 异常 |
peek() | E | 检索但不删除此队列的头部,如果此队列为空,则返回null |
size() | int | 返回队列中的元素数 |
contains(Object o) | boolean | 如果此队列包含指定元素,则返回true |
clear() | void | 移除此队列中的所有元素 |
toArray() | Object[] | 返回包含此队列所有元素的数组;返回数组按照队列元素排列顺序 |
上述方法是 Queue
接口中常用的方法,通过实现该接口,并重写其中的方法,即可定义自己的队列实现类。Queue
接口实现的类有很多,例如常用的有 LinkedList
、ArrayDeque
等。
Queue 接口不允许插入 null 元素,也不允许包含重复的元素。
2.1.1 Deque(双端队列)
public interface Deque<E>
extends Queue<E>
继承了 Queue
,支持两端(首尾)元素插入和移除的线性集合。非线程安全
方法名 | 返回值类型 | 描述 |
---|---|---|
addFirst(E e) | void | 在双端队列的前面插入元素 |
addLast(E e) | void | 在双端队列的末尾插入元素,类似于add(E e) |
getFirst() | E | 检索但不删除双端队列的第一个元素 |
getLast() | E | 检索但不删除双端队列的最后一个元素 |
pop() | E | 删除并返回双端队列的第一个元素 |
push(E e) | void | 相当于addFirst(E e),在双端队列的前面插入元素 |
removeFirstOccurrence(Object o) | boolean | 从双端队列中删除第一次出现的指定元素,如果不存在则保持不变 |
removeLastOccurrence(Object o) | boolean | 从双端队列中删除最后一次出现的指定元素,如果不存在则保持不变 |
常见实现类 LinkedList
Deque的主要特点
双向操作、队列特性、栈特性、实现类(Java提供:ArrayDeque/LinkedList)