Carte/cache temporel Java avec clés expirantes
Q : Existe-t-il une carte Java intégrée ou une structure de données similaire qui automatiquement supprime les entrées après un intervalle spécifié ?
R : Oui, Google Collections (maintenant connu sous le nom de Guava) fournit une classe MapMaker avec l'élément souhaité fonctionnalité :
ConcurrentMap<Key, Graph> graphs = new MapMaker() .concurrencyLevel(4) .softKeys() .weakValues() .maximumSize(10000) .expiration(10, TimeUnit.MINUTES) .makeComputingMap( new Function<Key, Graph>() { public Graph apply(Key key) { return createExpensiveGraph(key); } });
Remarque : Depuis Guava 10.0, les méthodes MapMaker mentionnées ci-dessus sont obsolètes au profit de la classe CacheBuilder :
LoadingCache<Key, Graph> graphs = CacheBuilder.newBuilder() .maximumSize(10000) .expireAfterWrite(10, TimeUnit.MINUTES) .build( new CacheLoader<Key, Graph>() { public Graph load(Key key) throws AnyException { return createExpensiveGraph(key); } });
Ce CacheBuilder fournit une flexibilité supplémentaire et une API plus moderne pour gérer le comportement du cache.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!