
Collection 接口
Collection 接口方法
| 接口声明 | 描述 |
|---|---|
| int size(); | 返回集合有多少个元素 |
| boolean isEmpty(); | 返回集合是否为空 |
| boolean contains(Object o); | 返回集合是否包含 o 元素 |
| boolean add(E e); | 给集合新增元素 e |
| boolean remove(Object o); | 删除集合中的 o 元素 |
| boolean containsAll(Collection<?> c); | 判断集合是否包含集合 c 中的元素 |
| boolean addAll(Collection<? extends E> c); | 向集合中新增集合 c 中的元素 |
| boolean removeAll(Collection<?> c); | 删除集合中与集合 c 中相同的元素 |
| Object[] toArray(); | 将集合转成数组 |
遍历
Iterator-迭代器
public interface Collection<E> extends Iterable<E> {/*** Returns an iterator over the elements in this collection. There are no* guarantees concerning the order in which the elements are returned* (unless this collection is an instance of some class that provides a* guarantee).** @return an <tt>Iterator</tt> over the elements in this collection*/Iterator<E> iterator();
Collection 接口由于继承了 Iterable,所以继承有一个获取迭代器的方法。
迭代器主要有两个方法配合使用来遍历 Collection 集合元素:
| 方法声明 | 方法描述 |
|---|---|
| boolean hasNext(); | 判断集合中是否还有下一个元素; |
| E next(); | 取出集合中的下一个元素; |
Collection<String> list = new ArrayList<>();// 添加元素略Iterator iterator = list.iterator();while (iterator.hasNext) {System.out.println(iterator.next());}
增强 for
增强 for 实际上底层也是使用 Iterator-迭代器 实现的遍历。相当于简化版的迭代器遍历
Collection<String> list = new ArrayList<>();// 添加元素略for (String str : list) {System.out.println(str);}
List 接口
List 接口特点
- List 集合中的元素添加顺序和取出顺序是一致的,存储元素允许重复;
- List 集合中每个元素都有其对应的顺序索引,索引从 0 开始,如获取第一个元素 get(0);
List 接口方法
除了继承自 Collection 的方法外,还有以下常用方法:
| 方法声明 | 描述 |
|---|---|
| void add(int index, E element); | 在 index 位置添加 element 元素 |
| boolean addAll(int index, Collection<? extends E> c); | 从 index 位置开始添加集合 c 中的所有元素 |
| int indexOf(Object o); | 返回元素 o 首次在集合中出现的位置 |
| int lastIndexOf(Object o); | 返回元素 o 最后在集合中出现的位置 |
| E remove(int index); | 删除 index 索引的元素并返回该元素 |
| E get(int index); | 返回 index 位置的元素 |
| E set(int index, E element); | 替换 index 位置的元素为 element |
| List |
返回从 fromIndex 到 toIndex 的子集合(前闭后开) |
迭代器
List 除了使用 Collection 继承的 Iterator 迭代器外,还有一个 ListIterator 迭代器。该迭代器拥有针对于 List 的额外方法:
| 方法声明 | 方法描述 |
|---|---|
| boolean hasNext(); | 判断集合中是否还有下一个元素 |
| E next(); | 取出集合中的下一个元素 |
| boolean hasPrevious(); | 判断集合中是否有上一个元素 |
| E previous(); | 返回上一个元素 |
| int nextIndex(); | 返回下一个元素的索引 |
| int previousIndex(); | 返回上一个元素的索引 |
Set 接口
Set 接口特点
Set 接口的方法都继承自 Collection 接口,没有自己定义的其他方法。
迭代器
可以使用继承自 Collection 接口的 Iterator 迭代器,和迭代器的简写形式:增强 for 循环;
补充:Queue 接口
Queue 接口特点
- 队列,先进先出,FIFO
- Queue 接口与 List、Set 同一级别,都是继承了 Collection 接口。LinkedList 实现了 Deque 接口。
Queue 接口方法
add() 方法继承自 Collection 接口
| 方法声明 | 方法描述 |
|---|---|
| boolean add(E e); | 增加一个元素,如果队列已满,则抛出一个IIIegaISlabEepeplian异常 |
| boolean offer(E e); | 添加一个元素并返回true,如果队列已满,则返回false |
| E remove(); | 移除并返回队列头部的元素,如果队列为空,则抛出一个NoSuchElementException异常 |
| E poll(); | 移除并返问队列头部的元素,如果队列为空,则返回null |
| E element(); | 返回队列头部的元素,如果队列为空,则抛出一个NoSuchElementException异常 |
| E peek(); | 返回队列头部的元素,如果队列为空,则返回null |
