我正在尝试学习ListIterator接口。我想出了两个版本的代码,
value: 11 index: 1
value: 22 index: 2
value: 33 index: 3
value: 44 index: 4
版本1的结果:
index: 0 value: 11
index: 1 value: 22
index: 2 value: 33
index: 3 value: 44
版本2的结果:
"John said, \"Well ain't that something.\""
我期待结果是一样的,但显然他们不是。有人可以告诉我为什么吗?
答案 0 :(得分:2)
首先调用it.next()
时,it.nextIndex()
将返回it.next()
结果后元素的索引,因为it.next()将返回当前索引处的值,然后返回增加指数。
视觉示例:
it.next()
首先:
v
index 0 1 2 3
value 11 22 33 44
call it.next() -> returns 11, increments index by 1
v
index 0 1 2 3
value 11 22 33 44
call it.nextIndex() -> returns 1
it.nextIndex()
首先:
v
index 0 1 2 3
value 11 22 33 44
call it.nextIndex() -> returns 0
v
index 0 1 2 3
value 11 22 33 44
call it.nextIndex() -> returns 11, increments index by 1
v
index 0 1 2 3
value 11 22 33 44
答案 1 :(得分:1)
字符串连接表达式从左到右进行计算。这意味着
"value: " + it.next() + " index: " + it.nextIndex()
在中调用nextIndex()
后调用 next()
"index: " + it.nextIndex() + " value: " + it.next()
反之亦然。
由于next()
移动了迭代器的位置,nextIndex()
返回的值在两种情况下都不同。