Heim  >  Artikel  >  Java  >  Wie erstelle ich eine zeitbasierte ablaufende Karte in Java?

Wie erstelle ich eine zeitbasierte ablaufende Karte in Java?

Barbara Streisand
Barbara StreisandOriginal
2024-11-27 14:35:12207Durchsuche

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

Zeitbasierte Java-Karte/Cache mit ablaufenden Schlüsseln

F: Gibt es eine integrierte Java-Karte oder eine ähnliche Datenstruktur, die automatisch funktioniert? Entfernt Einträge nach einem bestimmten Intervall?

A: Ja, Google Collections (jetzt bekannt als Guava) stellt einer MapMaker-Klasse das gewünschte bereit Funktionalität:

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);
         }
       });

Hinweis:Ab Guava 10.0 sind die oben genannten MapMaker-Methoden zugunsten der CacheBuilder-Klasse veraltet:

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);
          }
        });

Dieser CacheBuilder bietet zusätzliche Flexibilität und eine modernere API zur Verwaltung des Cache-Verhaltens.

Das obige ist der detaillierte Inhalt vonWie erstelle ich eine zeitbasierte ablaufende Karte in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn