一、Iterable:提供了一个泛型接口<T>;<T>中的T表示被迭代(遍历)的元素类型。
public interface Iterable<T>{
Iterable<T> iterable();
};//抽象类中的抽象方法
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);
}
}//接口中的默认方法==抽象类中的非抽象方法
二、Collection:泛型,继承自Iterable
1.Collection是不一定具备线性结构的特点。线性表是一种Collection,非线性表也是一种Collection。
线性结构的独有特点有:
(1)元素之间有前后关系
(2)容器中的元素,可以以下标的形式来实现
(3)有头部、尾部、中间的概念
public interface Collection<E> extends Interable<E>//Collection是继承来自Interable的泛型接口
2.方法
(1)int size();//返回器中元素的个数
(2)boolean isEmpty();//判断容器是否为空,size==0
(3)boolean contains(Object o);//容器中是否包含o元素,需要遍历容器中所有元素来和o元素进行相等性比较,会调用对象的equals方法
(4)boolean add(E e);//将元素e放入容器中,其中容器不一定是非线性结构,放入可能会失败
(5)boolean remove(Object o);//将容器中和o相等的其中一个元素删去,需要重写equals方法
(6)boolean addAll(Collection c);//将c容器中所有元素放入当前容器中,元素之间没有顺序
(7)void clear();//清空容器中的所有元素
三、List:List是线性结构
1.元素有顺序
可进行头插、尾插、头删、尾删、排序
List具备迭代能力
List具备装元素的能力
public interface List<E> extends Collection<E>
2.方法
(1)boolean add(E e);//对应尾插操作
(2)void add(int index,E element);//将元素插入到给定位置
(3)boolean remove(Obiect o);//删除第一个遇到的和o相等的元素
(4)E remove(int index);//将【index】位置的元素从线性结构中取出并返回
(5)boolean addAll(Collection c);//将c容器中的所有元素(按照一定的次序),尾插
(6)void sort(Comparator c);//以c作为元素的比较器,衡量元素大小进行原地排序
(7)E get(int index);//返回index位置的元素
(8)E set(int index,E element);//用element替换index位置的元素,并返回index位置原来的元素
(9)int indexOf(E e);//从前往后,第一个和e相等的元素所在位置
(10)int lastIndexOf(E e);//从后往前,最后一个和e相等的元素所在的位置
(11)List subList(int fromIndex,int toIndex);//将原有线性结构的[fromIndex,toIndex]截取