【发布时间】:2014-08-10 11:37:58
【问题描述】:
我有一个数据结构,其中有对象,它们有目标。他们有一个多对多的关系。 例如:object1 有目标:t1、t2、t3 和 object2 有目标:t2, t3。
我想编写一个 Guava LoadingCache 以便按目标存储这些对象中的每一个。现在,问题在于:对象 1 和 2 都将存储在 t2 和 t3 下。这是浪费。
所以,我想到的一个解决方案是拥有另一张 id 地图。而在目标缓存中,我将通过对象的 id 来存储对象。
现在,问题是:由于在 LoadingCache 中我们没有公开处理清除缓存的方法(或者在缓存被清除时监听的方法。),我无法保持 id 映射日期,缓存实际更新的时间。
有没有让这两张地图保持同步的好方法?
【问题讨论】:
-
我想我对您想要实现的目标有一个大致的了解,但是,最好以简化代码为例。我目前的具体问题是:什么需要保持同步?只是价值变化还是目标关联?也许对原始问题场景的描述也能很好地避免 XY 问题。