标签:
这个接口是各种List类的抽象接口,这个接口继承自Collection接口。
public interface List<E> extends Collection<E>
这是接口的基本信息。
int size();
这个方法返回List的元素数。
boolean isEmpty();
这个方法判断List是否为空。
boolean contains(Object o);
这个方法判断是否包含某个元素。
Iterator<E> iterator();
获取迭代器的方法。
Object[] toArray();
将List转换成数组的方法。
<T> T[] toArray(T[] a);
将List转换成泛型数组的方法。
boolean add(E e);
添加元素的方法。
boolean remove(Object o);
删除元素的方法。
boolean containsAll(Collection<?> c);
判断是否包含参数集合所有元素的方法。
boolean addAll(Collection<? extends E> c);
将参数集合中的所有元素添加到本List中。
boolean addAll(int index, Collection<? extends E> c);
将参数集合中的元素添加到本List的指定下标开始处。
boolean removeAll(Collection<?> c);
从本List中删除参数集合中所有元素的方法。
boolean retainAll(Collection<?> c);
将本List中和参数集合所有元素不一样的元素删除掉,和上面那个方法正好相反。
default void replaceAll(UnaryOperator<E> operator) {
Objects.requireNonNull(operator);
final ListIterator<E> li = this.listIterator();
while (li.hasNext()) {
li.set(operator.apply(li.next()));
}
}
default方法,进行元素替换,是为Lambda表达式准备的。参数是一元运算符的接口。
首先判断参数是否为空。然后获取List迭代器,开始迭代,让参数进行运算,然后用迭代器赋值。我就能看懂这些。。。
default void sort(Comparator<? super E> c) {
Object[] a = this.toArray();
Arrays.sort(a, (Comparator) c);
ListIterator<E> i = this.listIterator();
for (Object e : a) {
i.next();
i.set((E) e);
}
}
default方法,进行排序。首先将本List转换成数组,然后用参数和Arrays类为转换后的数组排序。然后获取List迭代器,遍历数组将数组的每个元素用迭代器放置到合适位置。
void clear();
清除所有元素的方法。
boolean equals(Object o);
判断是否相等的方法。
int hashCode();
计算哈希值的方法。
E get(int index);
获取指定位置元素的方法。
E set(int index, E element);
为指定位置的元素赋值的方法。
void add(int index, E element);
为指定位置添加元素的方法。
E remove(int index);
删除指定位置元素的方法。
int indexOf(Object o);
返回参数元素所在位置的方法。
int lastIndexOf(Object o);
返回参数元素最后出现的位置的方法。
ListIterator<E> listIterator();
获取List迭代器的方法。
ListIterator<E> listIterator(int index);
获取从指定下标开始迭代的List迭代器方法。
List<E> subList(int fromIndex, int toIndex);
截取List的方法。
default Spliterator<E> spliterator() {
return Spliterators.spliterator(this, Spliterator.ORDERED);
}
default方法,返回Spliterator,也就是将一个集合分成多个块,并行处理这多个块并将处理结果汇合到一起的一个API。
至此List接口的源码阅读完毕
标签:
原文地址:http://blog.csdn.net/ccdust/article/details/51346563