Abgelaufene Java-Sammlung

Mit Redis können Sie beispielsweise ein Ablaufdatum für einen Eintrag angeben. Das ist im Allgemeinen genug, aber suchen Sie nach einer Sammlungsbibliothek in Java, die das kann.

Quellcode

pom.xml


	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>11</java.version>
	</properties>

	<dependencies>
		<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-collections4 -->
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-collections4</artifactId>
			<version>4.4</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
		<dependency>
			<groupId>com.google.guava</groupId>
			<artifactId>guava</artifactId>
			<version>28.0-jre</version>
		</dependency>

	</dependencies>

Passive ablaufende Karte aus Apache Commons-Sammlungen

import java.util.Map;
import java.util.concurrent.TimeUnit;

import org.apache.commons.collections4.map.PassiveExpiringMap;

public class App {
    public static void main(String[] args) throws InterruptedException {

        Map<String, String> map = new PassiveExpiringMap<String, String>(3000, TimeUnit.MILLISECONDS);
        map.put("key1", "value1");

        while (true) {
            TimeUnit.MILLISECONDS.sleep(1000);
            System.out.println(map.size());
        }
    }
}

Wenn das Obige ausgeführt wird, wird es wie folgt.

1
1
0

Ablaufdatum 3 Sekunden. Der Ablauf wird nur überprüft, wenn Sie eine bestimmte Operation auf der Karte als "Passiv" ausführen. Was ist eine bestimmte Operation? `Alle abgelaufenen Einträge werden aus .. entfernt, wie in https://commons.apache.org/proper/commons-collections/apidocs/org/apache/commons/collections4/map/PassiveExpiringMap.html gezeigt Der, der so etwas hat wie . `.

note that passiveexpiringmap is not synchronized and is not thread-safeEs steht geschrieben, dass Sie dort vorsichtig sein müssen.

Guavas Cache Builder

import java.util.concurrent.TimeUnit;

import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;

public class GuavaCaamain {

    public static void main(String[] args) throws InterruptedException {        
        Cache<String, String> cache = CacheBuilder.newBuilder().expireAfterWrite(3000, TimeUnit.MILLISECONDS).build();
        cache.put("key1", "value1");
        
        while (true) {
            TimeUnit.MILLISECONDS.sleep(1000);
            cache.put("key2", "value2");
            System.out.println(cache.size());
        }

    }

}

Wenn das Obige ausgeführt wird, wird es wie folgt.

2
2
1

Überprüfen Sie das Ablaufdatum zum Zeitpunkt des Schreibens, wie in expireAfterWrite </ code> angegeben. Wenn Sie also die Put-Zeile aus dem obigen Code löschen, ändert sich der Inhalt des Caches nicht.

Um dies zum Zeitpunkt des Lesens zu überprüfen, führen Sie im Gegenteil die folgenden Schritte aus.

Cache<String, String> cache = CacheBuilder.newBuilder().expireAfterAccess(3000, TimeUnit.MILLISECONDS).build();

Referenz

https://stackoverflow.com/questions/3802370/java-time-based-map-cache-with-expiring-keys

Recommended Posts

Abgelaufene Java-Sammlung
[Java] Komparator der Collection-Klasse
Java9-Sammlung
Java Reintroduction-Java Collection
[Java] Übersicht über Java
[Java] Sammlungsframework
Bedeutung der aus der Java Collection gelernten Schnittstelle
[Java] Inhalt der Collection-Schnittstelle und der List-Schnittstelle
Voraussichtliche Funktionen von Java
[Java] Bedeutung der serialVersionUID
Fragen zum Java-Sammlungsinterview
NIO.2 Überprüfung von Java
Bewertung von Java Shilber
Java - Vereinigung von Kommentaren
Geschichte der Java-Annotationen
Java (Verdienste des Polymorphismus)
Eine Sammlung einfacher Fragen für Java-Anfänger
NIO Bewertung von Java
[Java] Drei Funktionen von Java
Zusammenfassung der Java-Unterstützung 2018
Java: Verwenden Sie Stream, um den Inhalt einer Sammlung zu sortieren
Erste Schritte mit Java Collection
Über Java-Instanzen
[Java] Mirage-Basic-Verwendung von SQL
[Java] Anfängerverständnis von Servlet-②
[Java] Praxis der Ausnahmebehandlung [Ausnahme]
[Java11] Stream-Zusammenfassung - Vorteile von Stream -
Grundlagen der Zeichenoperation (Java)
Einschlussbeurteilung von Sammlungselementen
Java Parallel Code Sample Collection
[Java] Erstellen von Originalanmerkungen
Java-Lerntag 4
[Java] Anfängerverständnis von Servlet-①
Java Ende des Monats plusMonate
[Java] Zusammenfassung der regulären Ausdrücke
[Java] Zusammenfassung der Operatoren (Operator)
[Java] Implementierung des Faistel-Netzwerks
Sammlung von Java-Testcode-Methoden
Was ist eine Java-Sammlung?
Android-Bibliothekssammlung von "Mercariatte"
Zusammenfassung der Grundlagen der Java-Sprache
Zusammenfassung der Java Math Klasse
Aufzählung aller Kombinationen Java
Java (Vererbung von is-ein Prinzip)
Vor- und Nachteile von Java
Vorteile der statischen Java-Methode
[Java] Zusammenfassung der Steuerungssyntax
Java-Implementierung von Tri-Tree
Deep Copy Collection in Java
Zusammenfassung der Java-Fehlerverarbeitung
[Java] Zusammenfassung der Entwurfsmuster
[Java] Zusammenfassung der mathematischen Operationen
[Java] Struktur der Auflistungsklasse festlegen (zu HashSet und TreeSet)
[Java] Geschwindigkeitsvergleich der Zeichenfolgenkombination
Denken Sie an eine Java-Update-Strategie
[Java] Löschen Sie die Elemente von List
[Für Anfänger] Zusammenfassung des Java-Konstruktors
Verschiedene Methoden der Java String Klasse