我正在为双向链接列表执行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,这一点非常重要。
我并不意味着 - 每个循环,我的意思是你必须在结束前停止的循环,或者通常是任何具有多个终止条件的循环。
答案 0 :(得分:2)
我应该使用迭代器而不是for / while循环吗? (在这种情况下,循环有多个终止条件。)
(我上面的后记)
这主要是一个意见问题,但如果简单的for
循环做了你想要的,避免创建一个Iterator
对象并调用它的方法的开销似乎是一个合理的客观原因坚持使用简单的for
循环。 JVM的JIT优化得更少,特别是如果您正在编写将在许多地方使用的实用程序类(例如,双向链接列表)。