第一次调用 previous returns 如何与最后一次调用 next 相同的元素?
How does the first call to previous returns the same element as the last call to next?
我正在阅读 Java Tutorial Oracle 列表界面,遇到以下语句:
Calls to next and previous can be intermixed, but you have to be a bit
careful. The first call to previous returns the same element as the
last call to next.
我正在努力理解这个短语:对上一个 returns 的第一次调用与对下一个的最后一次调用相同的元素。有人可以更详细地解释一下吗?
The first call to previous returns the same element as the last call to next. Could someone explain it in a bit more detail?
如果你说 .next()
然后 .previous()
,你会得到相同的实例,因为 Iterator
的内部位置。否则,对 .next()
的连续调用将 return same instance.
a b c
^
.next()
给出 b
,但将指针移动到 c
a b c
^
所以 .previous()
然后产生 b
.
如果你改变你的思维模式,这很简单。 next
和 previous
的 "cursor" 位于 between 元素之间。当您调用 next
或 previous
时,它移动一个元素并 return 移动它传递的元素。
它开始于第一个元素之前。调用 next
return 是它经过的元素(第一个),光标停在第一个和第二个元素(元素 0 和 1)之间。
此时调用 next
return 是第二个元素并将光标留在第二个和第三个元素之间。相反,如果您调用 previous
,光标将返回第一个元素并 return 它,再次停在第一个元素之前。
list.previous
return 移动列表中的前一个元素并移动光标位置 backwards.Note 交替调用 next 和 previous 将重复 return 相同的元素。
ListIterator<Object> iterator = (ListIterator<Object>) myList.iterator();
while (iterator.hasNext()) {
Object o = iterator.next();
Object secondObject = iterator.previous();
o == secondObject; // ALways
}
希望这个例子能解开你的疑惑
List<Integer> colls = Arrays.asList(new Integer[]{1,2,3,4,5,6,7,8,9,10});
ListIterator<Integer> iterator = colls.listIterator();
iterator.next();
System.out.println("Last Call to next " + iterator.next());
System.out.println("First Call to previous " + iterator.previous());
我正在阅读 Java Tutorial Oracle 列表界面,遇到以下语句:
Calls to next and previous can be intermixed, but you have to be a bit careful. The first call to previous returns the same element as the last call to next.
我正在努力理解这个短语:对上一个 returns 的第一次调用与对下一个的最后一次调用相同的元素。有人可以更详细地解释一下吗?
The first call to previous returns the same element as the last call to next. Could someone explain it in a bit more detail?
如果你说 .next()
然后 .previous()
,你会得到相同的实例,因为 Iterator
的内部位置。否则,对 .next()
的连续调用将 return same instance.
a b c
^
.next()
给出 b
,但将指针移动到 c
a b c
^
所以 .previous()
然后产生 b
.
如果你改变你的思维模式,这很简单。 next
和 previous
的 "cursor" 位于 between 元素之间。当您调用 next
或 previous
时,它移动一个元素并 return 移动它传递的元素。
它开始于第一个元素之前。调用 next
return 是它经过的元素(第一个),光标停在第一个和第二个元素(元素 0 和 1)之间。
此时调用 next
return 是第二个元素并将光标留在第二个和第三个元素之间。相反,如果您调用 previous
,光标将返回第一个元素并 return 它,再次停在第一个元素之前。
list.previous
return 移动列表中的前一个元素并移动光标位置 backwards.Note 交替调用 next 和 previous 将重复 return 相同的元素。
ListIterator<Object> iterator = (ListIterator<Object>) myList.iterator();
while (iterator.hasNext()) {
Object o = iterator.next();
Object secondObject = iterator.previous();
o == secondObject; // ALways
}
希望这个例子能解开你的疑惑
List<Integer> colls = Arrays.asList(new Integer[]{1,2,3,4,5,6,7,8,9,10});
ListIterator<Integer> iterator = colls.listIterator();
iterator.next();
System.out.println("Last Call to next " + iterator.next());
System.out.println("First Call to previous " + iterator.previous());