java - 在abstractmap类内部,为什么remove()不显示UnsupportedOperationException?

标签 java dictionary collections

我正在阅读[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/

相关文章:

java - spring:通过读取另一个 bean 的属性来设置一个 bean 的属性?

java - JInternalFrames 中的 JScrollPanes 用于从右到左组件方向 - Java bug?

java - 如何在Android Studio中将小部件置于其他提升的小部件的前面

python - TypeError 'set' 对象不支持项目分配

c# - 在内部(在同一程序集中)将项目添加到 ReadOnlyCollection<T> 的最佳方法?

java - 在 Java 中更新 Set 的对象

java - Java 方法中如何返回值?

python - 尝试在 Python 中添加到字典时出现 ValueError

c# - 您能解释一下此System.Collections.Generic.KeyNotFoundException吗?

c# - 不能将 2 个后代加入其 parent 的同一集合下