Я думаю, что Луи Вассерман предоставил ответ в одном из комментариев выше, то есть, что нет готовых комбо Multimap
и Cache
. Я решил свою проблему / требования с помощью решения, описанного в псевдокоде ниже:
private Cache<Integer,Object> cache = CacheBuilder.newBuilder().SomeConfig.build();
private Multimap<Integer,Object> multimap = HashMultimap<Integer, Object>.create();
private AtomicInteger atomicid = new AtomicInteger(0);
public void putInMultimap(int id, Object obj) {
int mapid = atomicid.addAndGet(1);
cache.put(mapid,obj);
multimap.put(id,mapid);
}
public List<Object> getFromMultimap(int id) {
Set<Integer> mapids = multimap.get(id);
List<Object> list = new ArrayList<Object>();
for (int i : mapids) {
list.add(cache.getIfPresent(i));
}
return list;
}
Это простое «решение» имеет некоторые ограничения, но оно работает для меня нормально.