(注意:本文源码基于JDK1.8)
ArrayList内部定义的4个内部类,这4个内部类各自的用途是什么呢?本文将得到答案!
静态内部类ArrayListSpliterator
static final class ArrayListSpliterator<E> implements Spliterator<E> {
………………省略代码……………
}
ArrayListSpliterator是静态内部类,且不允许继承(final修饰),在ArrayList中的spliterator方法中返回的正是ArrayListSpliterator对象,每个ArrayListSpliterator表示ArrayList中实现的并发迭代器!
内部类Itr
private class Itr implements Iterator<E> {
…………省略很多代码…………
}
Itr作为ArrayList的普通内部类,Itr实现了Iterator接口,通过ArrayList的iterator()方法得到的是Itr对象,每个Itr对象表示顺序(线性)迭代器对象!
内部类ListItr
private class ListItr extends Itr implements ListIterator<E> {
…………省略很多代码…………
}
ListItr同样为ArrayList的普通内部类,它在Itr类的基础之上进行了扩展,我们通过调用ArrayList的listIterator()方法(共计两个重载方法)就可以得到一个ListItr对象,每个ListItr对象表示一个增强型的顺序遍历迭代器,它支持从后向前遍历ArrayList中的元素
内部类SubList
private class SubList extends AbstractList<E> implements RandomAccess {
…………省略很多源码…………
}
SubList以普通内部类形式定义在ArrayList中,ArrayList对象有一个subList()方法返回的是SubList对象,每个SubList对象代表一个List的某个区间中的所有元素的集合