Maison  >  Article  >  Java  >  Comment créer une carte expirant en fonction du temps en Java ?

Comment créer une carte expirant en fonction du temps en Java ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-27 14:35:12207parcourir

How to Create a Time-Based Expiring Map in Java?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn