如何知道Collection的Iterator是否支持remove()?

时间:2015-02-07 07:49:57

标签: java interface iterable java-collections-api

所有Java Collection实施Iterable,因此他们必须提供Iterator,其中指定了可选方法remove()。在remove()上调用Iterator时,它可以抛出UnsupportedOperationException

如何在不运行代码的情况下知道Java标准库中的Collection是否会返回支持Iterator的{​​{1}}?

当然我希望这些信息位于类的remove()方法的Javadoc中,而是找到一堆指向超类和接口的链接。例如:http://docs.oracle.com/javase/8/docs/api/java/util/TreeSet.html#iterator--我也没有找到关于链接的任何澄清。

2 个答案:

答案 0 :(得分:4)

没有办法知道这个事前。除非正确记录remove()是否支持(并且坦率地说,即使 “正确”记录),您唯一可以确定的方法是尝试。

答案 1 :(得分:0)

数据结构的选择取决于您打算支持的内容,因此当您使用它时,您作为开发人员已经知道底层实现是否支持删除。

如果实际实施不符合您的假设/理解,则会抛出异常。