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)访问。如果您不使用基于散列的映射,有什么理由不使用它吗?