2010-07-02 9 views
0

Je cherche à implémenter un cache basé sur l'horodatage avec plusieurs clés. Quelle structure de données autre que les tables de hachage que j'utiliserais. Toutes les suggestions ...cache avec plusieurs clés

pour deux valeurs, paire pourrait être utilisé, java (un) heureusement n'a pas une paire.

s'il s'agit d'un triplet ou d'un quatuor, quelle architecture est conseillée. ou juste la structure de données de bonnes pratiques à utiliser est également suffisante ...

Répondre

2

En supposant que vous souhaitez récupérer uniquement la valeur mise en cache donnée tous les des clés, vous pouvez simplement créer un objet CacheKey. Les cartes/Hashtable sont encore un candidat décent ici:

map.put(new CacheKey(keyA, keyB, keyC), value); 
map.get(new CacheKey(keyA, keyB, keyC)); 
//etc... 

Assurez-vous de mettre en œuvre correctement equals() et hashcode() dans la classe CacheKey. Toutefois, si vous avez l'intention d'utiliser cette carte ou cette hashtable en cache, vous devriez sérieusement envisager de réutiliser une bibliothèque de mise en cache existante, sauf si vous voulez limiter le nombre d'entrées stockées dans la carte, en choisissant EhCache est incroyablement simple à utiliser et possède de nombreuses options de configuration - les caches peuvent avoir un nombre maximum d'entrées ou une taille de mémoire maximale, les caches peuvent déborder sur le disque, etc.

0

Faire une table de hachage où la valeur est référence à l'objet, de sorte que vous ne devez pas stocker l'objet plusieurs fois si il a plusieurs clés.

Heureusement, il s'agit de la valeur par défaut en Java.

Questions connexes