Ich habe das folgende Problem, für das ich eine anständige Lösung möchte.
Beste Komplexität zum Synchronisieren einer Karte mit einer Sammlung
Ich habe eine HashMap, die einige Objekte in Form von String (E-Mail) und Objekt (Person) enthält.
Diese Karte wird über eine Sammlung bevölkert über eine Methode updatePersonList (Sammlung Liste), wie unten beschrieben:
Jedes Mal, wenn eine neue Kollektion über das obige Verfahren erhalten wird, wird die Karte grundsätzlich die alle Elemente aus der Sammlung hinzufügen Karte. Das ist alles, was die Karte braucht, die neueste Kollektion. Was nicht in der Sammlung ist, sollte von der Karte entfernt werden.
Jetzt möchte ich wissen, wie ich die Karte effizient aktualisieren kann, weil, wie oben gelesen werden kann, die folgenden Szenarien möglich sind: 1. Einige Objekte können sowohl in der Karte als auch in der Sammlung gefunden werden daher sollten nur die neuen Objekte aus der Sammlung behalten werden und nicht alle.
2. Objekte, die sich in der Karte befinden, aber nicht in der Sammlung sind, sollten entfernt werden.
Was ist die beste Lösung in Bezug auf die Komplexität?
Nach einigen Untersuchungen kam ich mit dem Entfernen aller Objekte aus der Karte und füge die aus der Sammlung hinzu. Wenn jemand etwas besser weiß, wäre es schön, wenn es geteilt werden könnte.
Das ist, worüber ich nachgedacht habe, denn soweit ich weiß, wird die Karte beim Entfernen von Daten verkleinert und verkleinert, und beim Hinzufügen ändert sich die Größe nach dem Hinzufügen von Daten. Dies ist möglicherweise nicht so speicherperformant. Korrigiere mich, wenn ich falsch liege. –
@Andrei T: Da Elemente in der Map entfernt und neue erstellt werden, gibt es mehr Müll → häufiger eine Garbage Collection, wenn Sie die Hole Map entfernen und eine neue erstellen. Wenn dies jedoch spürbare Auswirkungen auf Ihre App hat, können Sie dies erst feststellen, nachdem Sie beide Implementierungen verglichen und profiliert haben. – MrSmith42