是否建议不要在循环遍历迭代器时使用iterator.hasNext()?
例如,我想将值obj设置为列表的每个元素.我可以使用以下代码或通过在循环中使用hasNext()使其更具可读性.
int size = list.size();
ListIterator<? super T> itr = list.listIterator();
for (int i=0; i<size; i++) {
itr.next();
itr.set(obj);
}
Run Code Online (Sandbox Code Playgroud)
我可以像下面那样编写代码而不是这些代码.
for (ListIterator<? super T> itr = list.listIterator(); itr.hasNext(); ) {
itr.next();
itr.set(obj);
}
Run Code Online (Sandbox Code Playgroud)
是否建议不要在循环遍历迭代器时使用iterator.hasNext()?
不.hasNext是迭代器迭代的标准方法.例如,这就是增强型for语句在可迭代的幕后所做的事情.
话虽如此,您的代码已经是特定于ListIterator的,正如您所使用的那样ListIterator.set- 因此您的第二个代码块目前不会实际编译.即使它确实如此,它仍然无法工作,因为你仍然需要打电话next().这会工作:
for (ListIterator<? super T> itr = list.listIterator(); itr.hasNext(); ) {
itr.next();
itr.set(obj);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2537 次 |
| 最近记录: |