【发布时间】:2014-01-31 14:38:50
【问题描述】:
我正在尝试使用迭代器的迭代次数作为计数器,但想知道这样做的后果。
private int length(Iterator<?> it) {
int i = 0;
while(it.hasNext()) {
it.next();
i++;
}
return i;
}
这很好用,但我担心迭代器可能会在幕后做些什么。也许当我遍历堆栈时,它会将项目从堆栈中弹出,或者如果我正在使用优先级队列,它会修改优先级。
javadoc 是这样说迭代器的:
下一个
E 下一个()
返回迭代中的下一个元素。
退货:
迭代中的下一个元素
抛出:
NoSuchElementException - 如果迭代没有更多元素
我无法保证遍历这个未知集合不会修改它。我是否在考虑不切实际的边缘情况,或者这是一个问题?有没有更好的办法?
【问题讨论】:
-
如果有人给你一个
Iterator,他们希望你打电话给next(),不管有什么副作用。