这种情况似乎很普遍,但尚未找到任何解决方案。
以下情形:我需要实现一个将对象存储在内存中的缓存(可能基于例如Guava等)。我存储的对象可以通过以下任一方式识别:
(id)
(propA, propB, propC)
因此它是ID或三个属性的组合。现在,我当然可以使用组合键(一些简单的Java类或Pair)将其存储到缓存中:
[(id), (propA, propB, propC)] -> (object)
到目前为止,这没什么特别的。我的问题是,在读取缓存期间,我只有其中一个键。因此,计算组合键上的hashCode()
不会达到缓存条目。
就目前而言,我想到一个解决方案,基本上是两个缓存/映射:
(propA, propB, propC) -> (id)
(id) -> (object)
有人知道实现此目的的另一种方法,或者甚至知道这种情况下的现有实现吗?
谢谢。