hasNext()
、next()
、remove()
方法,而沒有 add(E)
方法 ?
iterator.add()
方法,理論上來說,應該是要在當前這個元素 E1 後面新增一個元素 E2,使得下次遍歷此集合時,E2 一定會出現在 E1 後面,也就是 [….E1, E2, ….]add()
方法是以這個語意為前提的話,那麼迭代器不提供此方法是很合理的,對於有序的集合(像是ArrayList)來說,在此元素後面新增一個元素是一個很簡單的事情,但是對於無序的集合(像是HashSet)來說,不能保證新插入的這個元素 E2 一定會在 E1 後面(因為還得計算 HashCode),如此就違反了 add()
的語意了,這也就是為什麼 Iterator 接口不提供 add()
方法add()
方法,因此 Iterator 接口沒必要提供這個方法