【List源码】List源码一
2019-07-11 本文已影响15人
秀叶寒冬
- List是一个接口,继承自Collection,数据类型是泛型。
public interface List<E> extends Collection<E>{
}
- size()返回的是int类型,返回的数据表示链表的长度,如果链表中数据的长度超过Integer.MAX_VALUE,那么返回的数值为Integer.MAX_VALUE。
int size();
- isEmpty()是List判空的方法,返回值为boolean类型。如果返回true,则链表里的数据为空。
boolean isEmpty();
- contains方法是判断链表中是否包含指定的元素。传入的参数是Object类型,返回值为boolean类型。如果链表包含指定的元素,则返回true。确切说,当且仅当链表中包含一个指定元素时返回true。
boolean contains(Object o);
- iterator是迭代器,数据类型是泛型,返回的是一个迭代器对象,按照链表存储的顺序取出元素。
Iterator<E> iterator();
- toArray方法是将链表转化为数组,返回的是一个Object类型的数组。
Object[] toArray();
- 以下方法带有一个参数,该参数是需要存储数组数据的对象,类型是T,与需要转换为数组的链表类型一样,返回的是一个T类型的数组。
<T> T[] toArray(T[] a);
- add方法是在链表末尾添加指定的元素
boolean add(E e);
- remove方法是移除指定元素,如果链表中没有该元素,则链表将不会有任何变化;如果有该元素则移除该元素并返回一个boolean类型的值。
boolean remove(Object o);
- 判断是否包含指定集合元素。如果包含则返回true,如果不包含则返回false。指定集合如果有一个或者多个null,则会报空指针异常。
boolean containsAll(Collection<?> c);
- 在链表末尾添加指定集合的元素,如果链表改变则返回true。如果指定集合元素的类阻止其被添加到链表中,则包ClassCastException异常;如果指定集合包含一个或多个null元素,且List不允许null元素,或者指定的集合是null则会报空指针异常;如果指定集合的一些属性阻止它被加入到链表中,则会报IllegalArgumentException异常。
boolean addAll(Collection<? extends E> c);
- 下面的方法是在链表的指定位置插入指定的集合。如果链表的结果改变,则返回true。如果List中不支持addAll操作,则会报UnsupportedOperationException异常;元素,且List不允许null元素,或者指定的集合是null则会报空指针异常;如果指定集合的一些属性阻止它被加入到链表中,则会报IllegalArgumentException异常;如果index<0或者index>链表长度,则会报数组越界异常。
boolean addAll(int index, Collection<? extends E> c);
- 下面的方法移除链表中指定集合的元素。
boolean removeAll(Collection<?> c);
- 下面方法保留链表中指定集合的元素。换句话说,就是移除链表中不在指定集合里的元素。
boolean retainAll(Collection<?> c);
- 下面的方法是用指定的操作值来替换list中的值。参数称为操作者,就是一个表达式。该操作者不能为空,replaceAll里面是用一个迭代器来循环链表中的值,并重新设置链表中的值。
default void replaceAll(UnaryOperator<E> operator) {
Objects.requireNonNull(operator);
final ListIterator<E> li = this.listIterator();
while (li.hasNext()) {
li.set(operator.apply(li.next()));
}
}