gpt4 book ai didi

java - 内容不会改变的 map

转载 作者:行者123 更新时间:2023-12-01 13:32:18 25 4
gpt4 key购买 nike

我希望 map 提供其值和 View 的副本,因此条目不会以任何方式意外修改。有这样的实现吗?我已经研究了 Guava 的实例,但还没有找到我想要的。

最佳答案

没有直接的方法可以做到这一点,一旦您通过获取元素,Map就会按值存储对对象的引用

Value v = map.get(key)

map 无法禁止修改对象。

有两种选择,您可以为每次调用返回对象的副本,根据您从 map 获取数据的频率,这可能效率较低,例如:

public class MyMap<K,V> extends HashMap<K,V> {
@Override
public V get(K key) {
V v = super.get(key);
return v != null ? v.clone() : null;
}

或者您提供一个无法修改的自定义对象,因为没有办法做到这一点,例如:

class Value {
public final Field1 field1;
public final Field2 field2;

public Value(Field1 field1, Field2 field2) {
this.field1 = field1;
this.field2 = field2;
}
}

但是,如果您不对每个包含的成员变量递归地应用相同的方法,则这将允许修改 field1 内容。

关于java - 内容不会改变的 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21497751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com