Jon*_*eet 10
Map说实话,任何这样的地图都会违反正常的界面.但是如果您愿意这样做,您可以轻松地创建自己的Map实现,该实现委托给另一个地图,但只有在检查现有元素的存在之后:
public final class NonReplacementMap<K, V> implements Map<K, V> {
private final Map<K, V> original;
public NonReplacementMap(Map<K, V> original) {
this.original = original;
}
@Override
public void put(K key, V value) {
if (original.containsKey(key)) {
// Or whatever unchecked exception you want
throw new IllegalStateException("Key already in map");
}
original.put(key, value);
}
// etc
}
Run Code Online (Sandbox Code Playgroud)
使用 myMap.putIfAbsent(key, val)
这是从 1.8 版本开始在 Map 接口中引入的
* @since 1.8
*/
default V putIfAbsent(K key, V value) {
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3758 次 |
| 最近记录: |