Похоже, что это довольно распространенный случай, но пока не найдено никаких решений.
Следующий сценарий: мне нужно реализовать кеш (может быть основан, например, на гуаве или около того), который хранит объекты в памяти. Объект, который я храню, может быть идентифицирован одним из следующих:
(id)
(propA, propB, propC)
Так что это либо ID, либо комбинация из трех свойств. Теперь я, конечно, могу сохранить это в кеше с комбинированным ключом (некоторый простой класс Java или Pair):
[(id), (propA, propB, propC)] -> (object)
Пока что в этом нет ничего особенного. Моя проблема в том, что во время чтения кеша у меня есть только один из ключей. Таким образом, вычисление hashCode()
для комбинированного ключа не может попасть в запись кэша.
На данный момент я имею в виду одно решение, в основном это два кэша / карты:
(propA, propB, propC) -> (id)
(id) -> (object)
Кто-нибудь знает альтернативный способ достижения этого или, может быть, даже знает о существующих реализациях для таких случаев?
Заранее спасибо.