您能否解释Iterator结果的行为:
ArrayList< String > list = new ArrayList< >(
Arrays.asList( new String[] { "a", "b", "c", "d" } ) );
int i = 0;
ListIterator< String > iterator = list.listIterator();
while( iterator.hasNext() ) {
if( ++i == 3 ) {
System.out.println(
iterator.previous() + iterator.nextIndex() );
}
System.out.println( iterator.next() + iterator.nextIndex() );
}
输出为:a1 b2 b1 b2 c3 d4
为什么第三个输出是“ b1”而不是“ a1”?
我知道结构
0 1 2 3元素索引
a b c d元素值
最佳答案
请参阅Javadoc中的ListIterator
:
ListIterator
没有当前元素;其光标位置始终位于previous()
调用将返回的元素和next()
调用将返回的元素之间。
和ListIterator.previous()
:
返回列表中的前一个元素,并将光标位置向后移动...(请注意,交替调用next
和previous
将重复返回同一元素。)
您正在previous()
和b
之间调用c
,这将返回前一个元素(b
)并将光标移回一个位置(在a
和b
之间),因此现在nextIndex()
返回1
。
关于java - Java迭代器nextIndex指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38295626/