所有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--我也没有找到关于链接的任何澄清。
答案 0 :(得分:4)
没有办法知道这个事前。除非正确记录remove()
是否支持(并且坦率地说,即使 “正确”记录),您唯一可以确定的方法是尝试。
答案 1 :(得分:0)
数据结构的选择取决于您打算支持的内容,因此当您使用它时,您作为开发人员已经知道底层实现是否支持删除。
如果实际实施不符合您的假设/理解,则会抛出异常。