所有的Java Collection
都执行Iterable
,所以他们必须提供Iterator
,它指定了一个可选的方法remove()
。在Iterator
上调用remove()
时,可以抛出UnsupportedOperationException
。如何知道集合的Iterator是否支持remove()?
如何知道Java标准库中的Collection
是否会返回支持remove()
的Iterator
或者没有运行代码?
当然我期望这些信息位于类的remove()
方法的Javadoc中,但是却发现了一些指向超类和接口的链接。例如:http://docs.oracle.com/javase/8/docs/api/java/util/TreeSet.html#iterator--我没有发现有关链接的任何澄清,无论是。
唯一真正的办法是尝试和处理异常,我知道蹩脚。 Collections API不是最优雅的设计API,它应该没有大多数核心接口的可变和可变版本 – MadProgrammer 2015-02-07 07:53:02
如果您阅读了链接到的TreeSet的类级文档,这意味着remove()事实上工作。很高兴看到一些示例代码... – 2015-02-07 07:53:26
你最好的选择是阅读javadoc。例如'Arrays.asList'说返回的列表具有固定的大小,所以你可以想象它的迭代器不能删除。大多数“标准”收藏品都是可变的并且允许删除。 – assylias 2015-02-07 07:58:54