如何在LoadingCache中有效地存储对象,可能有多个密钥

时间:2014-06-19 19:39:01

标签: java caching guava

我有一个数据结构,我有对象,他们有目标。他们有很多关系。 例如:object1有目标:t1,t2,t3和 object2有目标:t2,t3。

我想编写一个Guava LoadingCache,以便按目标存储每个对象。现在,问题是:对象1和2都将存储在t2和t3下。这是浪费。

所以,我想到的一个解决方案就是拥有另一张ID图。在目标缓存中,我将按对象存储对象。

现在,问题是:因为在一个LoadingCache中我们没有暴露的方法来处理清除缓存(或者一种方法来监听缓存何时被清除。),我无法保持id映射到date,当缓存实际更新时。

是否有一种保持这两张地图同步的好方法?

1 个答案:

答案 0 :(得分:3)

我质疑你的前提,特别是“这是浪费”。您将多个引用存储到对象中,而不是对象本身的多个副本,并且引用很便宜。拥有另一张ID的地图可能首先比原来的方法更严格