迭代器是快速失败的,枚举不是。除了Javadoc给出的点之外,这两者之间还有其他区别吗?
据Javadoc说,迭代器是快速失败的,枚举不是。除了Javadoc给出的点之外,这两者之间还有其他区别吗?,java,Java,据Javadoc说, 新的实现应该考虑使用枚举优先于枚举< /P> 如果新的实现应该考虑使用迭代器,为什么枚举不被弃用?< /P> 迭代器是快速失败的,枚举不是。除了Javadoc给出的点之外,这两者之间还有其他区别吗 谢谢Java中的许多东西都应该被弃用,但不能,因为有大量的遗留代码。枚举是一个,向量、哈希表、字典、属性是其他..有关更多差异: 迭代器添加了一个可选的删除操作,并且具有更短的方法名 描述枚举和迭代器之间的差异。但基本上,主要区别似乎是迭代器有一个枚举没有的remove方法,如
新的实现应该考虑使用枚举优先于枚举< /P>
如果新的实现应该考虑使用迭代器,为什么枚举不被弃用?< /P> 迭代器是快速失败的,枚举不是。除了Javadoc给出的点之外,这两者之间还有其他区别吗
谢谢Java中的许多东西都应该被弃用,但不能,因为有大量的遗留代码。枚举是一个,向量、哈希表、字典、属性是其他..有关更多差异: 迭代器添加了一个可选的删除操作,并且具有更短的方法名
描述枚举和迭代器之间的差异。但基本上,主要区别似乎是迭代器有一个枚举没有的remove方法,如果另一个线程试图修改正在迭代的集合,迭代器会抛出ConcurrentModificationException,而枚举没有这样做。迭代器比枚举慢。 迭代器可以遍历遗留和非遗留元素,但枚举只能遍历遗留元素
迭代器故障快,但故障不快。来自Javadoc:“迭代器添加了一个可选的删除操作,并具有较短的方法名。”Java已被弃用,人们仍在使用它。C89/C90标准也是如此,但很多人仍在使用它,C99甚至没有在所有编译器中完全实现。(更不用说C99现在在技术上也被弃用了,因为新的C11标准…)这是我的采访问题。我认为这与遗留代码的原因相同,但没有说明,因为我认为这背后有更多的逻辑原因;-)根据我的经验,表示不赞成通常不会阻止使用,它只是意味着“这在技术上仍然有效,但从现在起尽量不要使用它”。这并不意味着它将被删除,但它意味着它可能会在以后被删除,或者有更好的方法来做事情,所以如果可能的话,不要再依赖它了。Java甚至还有这类东西的注释,这会在使用代码时导致警告。不推荐有一个严重的方面:它标记了不再支持或维护的代码,基本上仍然挂在那里。不能保证在所有情况下都会抛出
ConcurrentModificationException
,虽然另外,java.util.concurrent
中的一些/大部分/所有类根本不会引发该异常。(见第2段)不,它不一定会被抛出,我只是说两者之间的区别是什么。