Java 在性能方面,映射的映射与键串联的单个映射相比,哪一个更好?
我正在用Java实现缓存(显然它有Java 在性能方面,映射的映射与键串联的单个映射相比,哪一个更好?,java,performance,caching,dictionary,hashmap,Java,Performance,Caching,Dictionary,Hashmap,我正在用Java实现缓存(显然它有get()和put()方法)。我有两个字符串键和一个对象值 Key1+Key2-->Val(“Key1”+“Key2”是键,Val是缓存值) 我有以下两种方法用基本操作实现缓存 方法1: void SingleMap.put(Key1 + Key2, val){ } 有单个映射,比如说SingleMap,这里的键是两个键的串联(Key1+Key2) 获取方法签名: Val SingleMap.get(Key1 + Key2){ } Void OuterMa
get()
和put()
方法)。我有两个字符串键和一个对象值
Key1+Key2-->Val
(“Key1”+“Key2”是键,Val是缓存值)
我有以下两种方法用基本操作实现缓存
方法1:
void SingleMap.put(Key1 + Key2, val){ }
有单个映射,比如说SingleMap
,这里的键是两个键的串联(Key1+Key2
)
获取方法签名:
Val SingleMap.get(Key1 + Key2){ }
Void OuterMap.put(Key1, new InnerMap(key2, val));
Put方法签名:
void SingleMap.put(Key1 + Key2, val){ }
方法2:
Val SingleMap.get(Key1 + Key2){ }
Void OuterMap.put(Key1, new InnerMap(key2, val));
我们将使用两张地图
InnerMap<Key2, val>
OuterMap<Key1, InnerMap>
Put方法签名:
Val SingleMap.get(Key1 + Key2){ }
Void OuterMap.put(Key1, new InnerMap(key2, val));
实现缓存的最佳方法(性能方面)是什么?
如果您有其他更好的方法,请告诉我。从性能角度看,您的第一种方法会更快,因为它只需要从1个地图中获取信息。 但是,如果使用此方法,则必须确保关键点始终保持相同的顺序(key1永远不能是key2),否则必须将key1+key2和key2+key1添加到贴图中
有关集合性能的更多信息:您可能没有注意到性能方面有多大的差异(您尝试了什么吗?),但从内存的角度来看,第一种方法可能更好,具体取决于外部键集的大小(即最终会有多少个内部映射)。此外,如果在任何情况下都必须提供两把钥匙,那么问题是为什么会有两把钥匙。