- List和ListIterator是什么?
- List源码
- ListIterator
List是Collection子接口,为所有数组实现的列表结构提供了统一接口
ListIterator是专门为迭代List新增的迭代器,可实现向前迭代
List源码为节省篇幅不再列出对Collectoion的复写方法,根据空格将源码分类:获取(指定位置的)ListIterator迭代器方法、截取方法、根据索引增-删-查-改、获取元素第一次/最后一次出现的位置、全替换、排序
public interface Listextends Collection { ListIterator listIterator(); ListIterator listIterator(int index); List subList(int fromIndex, int toIndex); void add(int index, E element); boolean addAll(int index, Collection extends E> c); E remove(int index); E get(int index); E set(int index, E element); int indexOf(Object o); int lastIndexOf(Object o); default void replaceAll(UnaryOperator operator) { Objects.requireNonNull(operator); final ListIterator li = this.listIterator(); while (li.hasNext()) { li.set(operator.apply(li.next())); } } default void sort(Comparator super E> c) { Object[] a = this.toArray(); Arrays.sort(a, (Comparator) c); ListIterator i = this.listIterator(); for (Object e : a) { i.next(); i.set((E) e); } } }
Tips:
- sort()方法需传入Comparator(子类可与父类排序),先转为数组排序,排完后依次放回List
- replaceAll()方法采用的是函数式编程,暂不懂
ListIterator是Iterator的子类,专门用来对数组结构迭代,为节省篇幅不再列出对Iterator的复写方法
public interface ListIteratorextends Iterator { void remove(); void add(E e); void set(E e); boolean hasPrevious(); E previous(); int nextIndex(); int previousIndex();
Tips:
- add():在迭代器当前位置插入,不返回boolean,假定 *** 作总会改变
- hasPrevious():判断是否存在上一个元素
- previous():获取上一个越过的元素
- nextIndex()和previousIndex():获取下一个/上一个元素的位置
- set():替换上一次越过的元素,调用前需调用next()或previous()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)