我应该使用迭代器还是简单循环?
Should I use iterators or simple loops?
我正在为双向链表执行 Java 实现。
我有一些这样的方法:
private DLNode<T> getNodeAtPosition(int position) throws DLListException {
verifySize(this.listSize(), position);
DLNode<T> result = this.first;
for (int counter = 0; counter < position; counter++) { // <=======
result = result.next;
}
return result;
}
可以使用 for/while 循环或迭代器来完成。哪一个优化了这些方法?如果你想做一个非常常用的 ADT,那是一件重要的事情。
我指的不是 for-each 循环,我指的是必须在结束前停止的循环,或者通常具有多个终止条件的任何循环。
Should I use iterators instead of for/while loops? (In this situation where the loop has more than one termination condition.)
(我上面的后记)
这主要是见仁见智,但如果简单的 for
循环可以满足您的需求,那么避免创建 Iterator
对象和调用其方法的开销似乎是合理的 objective 坚持使用简单的 for
循环的原因。 JVM 的 JIT 优化较少,特别是如果您正在编写将在很多地方使用的实用程序 class(例如,双向链表)。
我正在为双向链表执行 Java 实现。
我有一些这样的方法:
private DLNode<T> getNodeAtPosition(int position) throws DLListException {
verifySize(this.listSize(), position);
DLNode<T> result = this.first;
for (int counter = 0; counter < position; counter++) { // <=======
result = result.next;
}
return result;
}
可以使用 for/while 循环或迭代器来完成。哪一个优化了这些方法?如果你想做一个非常常用的 ADT,那是一件重要的事情。
我指的不是 for-each 循环,我指的是必须在结束前停止的循环,或者通常具有多个终止条件的任何循环。
Should I use iterators instead of for/while loops? (In this situation where the loop has more than one termination condition.)
(我上面的后记)
这主要是见仁见智,但如果简单的 for
循环可以满足您的需求,那么避免创建 Iterator
对象和调用其方法的开销似乎是合理的 objective 坚持使用简单的 for
循环的原因。 JVM 的 JIT 优化较少,特别是如果您正在编写将在很多地方使用的实用程序 class(例如,双向链表)。