Löschen ältesten Objekte von HashMap zu erreichen bestimmte Größe?

Ich habe eine hashmap in Java, dass ich eine Einschränkung in der Größe (um 50000). Aber ich sollte löschen Sie nur die Elemente, die die ältesten sind. Der UNIX-timestamp das Element gespeichert ist, in den Eintrag Objekt-Feld:

Map<String, MyModel> snapshot = new  HashMap<>();

und

public class MyModel { 
    private ZonedDateTime createdAt;
    //other fields...
}

Ich auch Sie in die Karte, um die von diesem Zeitstempel.

Was wäre der effektivste Weg, um erreichen diese Art der Löschung der jeweils ältesten Einträge? Beachten Sie, dass die "Schwelle" in der Zeit ist nicht bekannt, nur die gewünschte endgültige Größe der Karte.

  • Tun Sie Elemente hinzufügen, um die Karte in chronologischer Reihenfolge?
  • ja, das Tue ich
  • Dann glaube ich, Boris' Antwort ist der effektivste Weg, dies zu tun, oder zumindest die LinkedHashMap er Punkte, ob oder nicht Sie verwenden, die removeEldestEntry oder einfach entfernen Sie Einträge direkt (es hat eine Art, zu sagen, was die ältesten Schlüssel ist).
Schreibe einen Kommentar