你能解释一下迭代器结果的行为吗:
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() );
}
Run Code Online (Sandbox Code Playgroud)
输出是:a1 b2 b1 b2 c3 d4 为什么第三个输出是“b1”而不是“a1”?我想结构
0 1 2 3 元素索引
abcd 元素值
请参阅 Javadoc 以了解ListIterator:
A
ListIterator没有当前元素;它的光标位置始终位于调用previous()将返回的元素和调用 将返回的元素之间next()。
返回列表中的前一个元素并将光标位置向后移动... (请注意,交替调用
next和previous将重复返回相同的元素。)
您正在调用previous()between band c,它返回前一个元素 ( b) 并将光标设置回一个位置(在aand之间b),因此nextIndex()现在返回1.
| 归档时间: |
|
| 查看次数: |
786 次 |
| 最近记录: |