Iterable、Collection、List
1.关系图
在集合框架中,三者的关系如下所示,三者都是接口
2.Iterable
Iterable是一个具有迭代功能的泛型接口,表示实现该接口的类是可以逐个元素进行遍历的。
public interface Iterable<T> { Iterator<T> iterator(); //抽象类中的抽象方法 default void forEach(Consumer<? super T> action) { Objects.requireNonNull(action); for (T t : this) { action.accept(t); } } default Spliterator<T> spliterator() { return Spliterators.spliteratorUnknownSize(iterator(), 0); } }
其内部实现就是通过foreach循环或者调用 iterator() 方法来实现遍历。
3.Collection
Collection是继承于Iterable的泛型接口,用来实现集合的接口。
public interface Collection<E> extends Iterable<E>{};
常见方法签名:
方法 | 作用 |
add(Object o) | 集合中添加一个元素 |
addAll(Collection c) | 向集合中添加集合c的所有元素 |
clear() | 清除所有元素 |
contains(Object o) | 判断集合是否包含该元素 |
containsAll(collection c) | 判断集合是否包含集合c的元素 |
isEmpty() | 判断集合是否为空 |
iteration() | 返回iteration对象,用于遍历集合中的所有元素 |
remove(Object o) | 删除某个指定元素 |
removeAll(collection c) | 删除集合c中所有元素 |
retainAll(Collection c) | 仅保留集合c中出现的元素 |
int size() | 返回集合中元素的个数 |
Object[] toArray() | 把集合转换为一个数组 |
4.List
List就是一个线性表,即n个具有相同类型元素的有限序列,在该序列上可以执行增删改查以及变量等操作。
注意:
List是个接口,并不能直接用来实例化。
如果要使用,必须去实例化List的实现类。在集合框架中,ArrayList和LinkedList都实现了List接口。
常见方法标签名:
方法 | 作用 |
boolean add(E e) | 尾插 e |
void add(int index, E element) | 将 e 插入到 index 位置 |
boolean addAll(Collection<? extends E> c) | 尾插 c 中的元素 |
E remove(int index) | 删除 index 位置元素 |
boolean remove(Object o) | 删除遇到的第一个 o |
E get(int index) | 获取下标 index 位置元素 |
E set(int index, E element) | 将下标 index 位置元素设置为 element |
void clear() | 清空 |
boolean contains(Object o) | 判断 o 是否在线性表中 |
int indexOf(Object o) | 返回第一个 o 所在下标 |
int lastIndexOf(Object o) | 返回最后一个 o 的下标 |
List subList(int fromIndex, int toIndex) | 截取部分 list |