我試圖使用迭代器的迭代次數作爲計數器,但想知道這樣做的後果。迭代器可以更改它正在迭代的集合嗎? Java
private int length(Iterator<?> it) {
int i = 0;
while(it.hasNext()) {
it.next();
i++;
}
return i;
}
這工作正常,但我擔心迭代器可能會在幕後做些什麼。也許當我迭代堆棧時,它會將項目從堆棧中彈出,或者如果我使用優先級隊列,並且它會修改優先級。
的Javadoc說這對迭代器:
下一個
鄂中迭代的next()
返回的下一個元素。
返回:
在迭代
的下一個元素拋出:
NoSuchElementException - 如果迭代有沒有更多的元素
我沒有看到,遍歷這個未知的集合將不會修改擔保它。我是在想不切實際的邊緣案例,還是這是一個問題?有沒有更好的辦法?
如果有人向你傳遞'Iterator',他們希望你調用'next()',不管它的副作用是什麼。 –