我正在阅读[AbstractMap][1]
的代码,我看到了
public V More ...put(K key, V value) {
throw new UnsupportedOperationException();
}
put() 方法抛出异常。
虽然remove()有一个很大的实现。并且不会抛出此异常。
有人能解释一下为什么这么偏见吗?
最佳答案
默认的remove
操作只是迭代条目集而不是聪明。 remove
可以“总是”1 以这种方式实现,即使速度慢得令人痛苦。
put
始终需要了解精确的实现细节,包括 map 是否可修改。
对于不可修改的映射,迭代器不支持remove
,尽管这看起来不平衡。
1 仅当迭代器支持删除时,这才是正确的,如文档所述。
关于java - 在abstractmap类内部,为什么remove()不显示UnsupportedOperationException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18640822/