Java中的java.util.Iterator
和java.util.Enumeration
均可用来遍历Java中的集合框架(list,map,set等)。
但是两者也有一些区别,主要表现为:
并非所有的collection都支持
Enumeration
的遍历,但是都支持Iterator
的遍历。如Hashtable支持但是HashMap不支持。但是两者都支持Iterator
的遍历。Iterator
提供了remove()
方法可以在遍历的同时删除集合中的元素,但是Enumeration
没有这个方法,对集合中的元素只读两者的方法名不同,具体见下面的代码
1 |
|
从上面的代码可以看到,两者遍历的方法名不同:
名称 | 是否还有元素 | 找到下一元素 |
---|---|---|
Iterator | hasNext() | next() |
Enumeration | hasMoreElements() | nextElement() |
而且虽然em遍历的时候不可以通过自己删除某个元素,但是可以通过collection自身删除,见上面的ht.remove()
,而通过Iterator遍历的时候不可以通过collection自身删除,如上面假如用了hm.remove()
会抛出ConcurrentModificationException
。