所有的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