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!