我刚发现 Map
公开一个方法,用于“[删除]仅当指定键的项当前Map到指定值时”的方法。定义为:
default boolean remove(Object key, Object value)
我想不出在我自己的自定义Map的接口中包含此方法的原因。我很好奇,为什么有人要这么做?有人能举一个默认情况下不可替代的算法的例子吗 remove(key)
(没有'value'参数)?
我刚发现 Map
公开一个方法,用于“[删除]仅当指定键的项当前Map到指定值时”的方法。定义为:
default boolean remove(Object key, Object value)
我想不出在我自己的自定义Map的接口中包含此方法的原因。我很好奇,为什么有人要这么做?有人能举一个默认情况下不可替代的算法的例子吗 remove(key)
(没有'value'参数)?
1条答案
按热度按时间nuypyhwy1#
该方法的javadoc解释道:
对于此Map,默认实现等效于:
默认实现不保证此方法的同步性或原子性属性。任何提供原子性保证的实现都必须重写此方法并记录其并发属性。
一般来说,只要没有原子性保证,就不要重写它并使用上面的默认实现。
当多个线程访问同一Map时,这在并发编程中非常有用。你需要一个
ConcurrentHashMap
它为remove(Object, Object)
.例如,smth就是这样(想象一下)
ConcurrentHashMap<String, String> cache
在线程之间共享):在那个“持久操作”期间,另一个线程可能已经更新了分配给它的值
key
. 只有当键仍被指定给与以前相同的值时,才希望将其删除。