Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何引用活动贴图值_Java_Dictionary_Reference - Fatal编程技术网

Java 如何引用活动贴图值

Java 如何引用活动贴图值,java,dictionary,reference,Java,Dictionary,Reference,我有一个映射,其中包含我希望快速轻松访问的值。使用get(key)可能会很昂贵,因为Map越来越大。我不想每次需要时都拿到(钥匙)。但我也希望它能随着地图的变化而更新 private int i = get("i"); // This will not be aware of later changes to the Map private int i() { return get(""); // This is potentially slow } private Entry<

我有一个
映射
,其中包含我希望快速轻松访问的值。使用
get(key)
可能会很昂贵,因为
Map
越来越大。我不想每次需要时都拿到(钥匙)。但我也希望它能随着地图的变化而更新

private int i = get("i"); // This will not be aware of later changes to the Map

private int i() {
    return get(""); // This is potentially slow
}

private Entry<String,Integer> i; // This skips the key-matching part, and is aware of value changes, but unaware of removal
private int i=get(“i”);//这将不知道以后对地图的更改
私人互联网i({
return get(“”;//这可能很慢
}
私人进入i;//这将跳过键匹配部分,并知道值的更改,但不知道删除

我认为以上三个选项都不理想。我该怎么办?

您可以使用实现
属性更改侦听器的
映射,如中所示。如果您的映射无法存储
null
值,则可以通过将属性更改为
null
来表示删除。或者您可以实现自己的
MapChangeRemoveListener
接口


在任何情况下,变更都将通知已登记权益的任何一方。它不会返回映射值的“实时”引用,但至少您不必继续轮询映射以查找更改的值。

您可以使用实现
PropertyChangeListener
映射,如中所示。如果您的映射无法存储
null
值,则可以通过将属性更改为
null
来表示删除。或者您可以实现自己的
MapChangeRemoveListener
接口


在任何情况下,变更都将通知已登记权益的任何一方。它不会返回映射值的“实时”引用,但至少您不必继续轮询映射以查找更改的值。

您还打算如何获取该值?在
Map
yourself中迭代?“使用get(key)可能会随着Map的增大而变得昂贵。”如果它是一个哈希映射,则不应该这样做-哈希映射的要点是,除非发生大量冲突,否则它仍然是~O(1)访问。如果您没有使用基于散列的映射,有什么理由不使用它吗?您还打算如何获取该值?在
Map
yourself中迭代?“使用get(key)可能会随着Map的增大而变得昂贵。”如果它是一个哈希映射,则不应该这样做-哈希映射的要点是,除非发生大量冲突,否则它仍然是~O(1)访问。如果您不使用基于散列的映射,有什么理由不使用它吗?