Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
迭代器是快速失败的,枚举不是。除了Javadoc给出的点之外,这两者之间还有其他区别吗?_Java - Fatal编程技术网

迭代器是快速失败的,枚举不是。除了Javadoc给出的点之外,这两者之间还有其他区别吗?

迭代器是快速失败的,枚举不是。除了Javadoc给出的点之外,这两者之间还有其他区别吗?,java,Java,据Javadoc说, 新的实现应该考虑使用枚举优先于枚举< /P> 如果新的实现应该考虑使用迭代器,为什么枚举不被弃用?< /P> 迭代器是快速失败的,枚举不是。除了Javadoc给出的点之外,这两者之间还有其他区别吗 谢谢Java中的许多东西都应该被弃用,但不能,因为有大量的遗留代码。枚举是一个,向量、哈希表、字典、属性是其他..有关更多差异: 迭代器添加了一个可选的删除操作,并且具有更短的方法名 描述枚举和迭代器之间的差异。但基本上,主要区别似乎是迭代器有一个枚举没有的remove方法,如

据Javadoc说,

新的实现应该考虑使用枚举优先于枚举< /P>

如果新的实现应该考虑使用迭代器,为什么枚举不被弃用?< /P> 迭代器是快速失败的,枚举不是。除了Javadoc给出的点之外,这两者之间还有其他区别吗


谢谢

Java中的许多东西都应该被弃用,但不能,因为有大量的遗留代码。枚举是一个,向量、哈希表、字典、属性是其他..

有关更多差异:

迭代器添加了一个可选的删除操作,并且具有更短的方法名


描述枚举和迭代器之间的差异。但基本上,主要区别似乎是迭代器有一个枚举没有的remove方法,如果另一个线程试图修改正在迭代的集合,迭代器会抛出ConcurrentModificationException,而枚举没有这样做。

迭代器比枚举慢。 迭代器可以遍历遗留和非遗留元素,但枚举只能遍历遗留元素
迭代器故障快,但故障不快。

来自Javadoc:“迭代器添加了一个可选的删除操作,并具有较短的方法名。”Java已被弃用,人们仍在使用它。C89/C90标准也是如此,但很多人仍在使用它,C99甚至没有在所有编译器中完全实现。(更不用说C99现在在技术上也被弃用了,因为新的C11标准…)这是我的采访问题。我认为这与遗留代码的原因相同,但没有说明,因为我认为这背后有更多的逻辑原因;-)根据我的经验,表示不赞成通常不会阻止使用,它只是意味着“这在技术上仍然有效,但从现在起尽量不要使用它”。这并不意味着它将被删除,但它意味着它可能会在以后被删除,或者有更好的方法来做事情,所以如果可能的话,不要再依赖它了。Java甚至还有这类东西的注释,这会在使用代码时导致警告。不推荐有一个严重的方面:它标记了不再支持或维护的代码,基本上仍然挂在那里。不能保证在所有情况下都会抛出
ConcurrentModificationException
,虽然另外,
java.util.concurrent
中的一些/大部分/所有类根本不会引发该异常。(见第2段)不,它不一定会被抛出,我只是说两者之间的区别是什么。