Vergleich von zwei Sammlungen in Java
Habe ich zwei Sammlungen in einer Java-Klasse.Die erste Sammlung enthält die vorherigen Daten, die zweite enthält aktualisierte Daten aus der vorherigen Kollektion.
Ich würde gerne vergleichen die beiden Sammlungen, aber ich bin nicht sicher, der beste Weg, um dies zu implementieren, effizient.Beide Sammlungen enthalten die gleiche Menge von Elementen.
Basiert dann auf der carType in jede Sammlung, die ich durchführen möchte carType Methode.
Jede Hilfe ist willkommen
- stackoverflow.com/questions/23445/...
- Welches Ergebnis erwarten Sie von dem Vergleich; Sie möchten, extrahieren Sie die Elemente, die nicht ändern ? Sie müssen wissen, deren index in der Sammlung (es ist die gleiche in beiden)...
- Entschuldigung für die vage Beschreibung pgras. Die Sammlungen werden in der gleichen Reihenfolge und der gleichen Größe.Einige der Daten in die neue Kollektion, die aktualisiert wird aus der vorherigen Kollektion.Basierend auf carType,registrationNo und insurancePolicy die gleichen in beiden Sammlungen werde ich dann execute anderen code.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schwer zu helfen, weil Sie nicht sagen, uns wie Sie gerne vergleichen (gleiche Größe) Sammlungen. Einige Ideen, in der Hoffnung man wird fit:
Vergleichen Sie beide Sammlungen, wenn Sie dieselben Objekte enthalten, die in der gleichen Reihenfolge
Vergleichen Sie beide Sammlungen, wenn Sie dieselben Objekte enthalten, die in der beliebigen Reihenfolge
, Die Elemente in eine andere Sammlung, die sich geändert hat
Basierend auf Ihren Kommentar, dieser Algorithmus würde es tun. Es sammelt alle Autos, die aktualisiert wurden. Wenn das Ergebnis der Methode ist eine leere Liste, beide Sammlungen enthalten gleiche Einträge in der gleichen Reihenfolge. Der Algorithmus setzt auf eine korrekte Umsetzung der
equals()
auf dieCar
geben!new
in Ihre parameter nicht erlaubt ist. Auch, wo ist diesesnew
verwendet infindUpdatedCars
?hashCode()
undequals()
in IhremCar
ObjektVom set Arithmetik, die Mengen A und B gleich sind iff Eine subsetequal B und B subsetequal a, in Java, zwei Sammlungen A und B können Sie prüfen, Ihre Gleichheit ohne Rücksicht auf die Reihenfolge der Elemente mit
Map<Entity, Integer>
wobeiEntity
wird die Klasse gespeichert, die in Ihrer Sammlung haben und dieInteger
stellt dar, wie oft es Auftritt.Map
- Wenn es vorhanden ist, dann verringern Sie dieInteger
Wert um eins und führen Sie alle notwendigen Maßnahmen, wenn eine übereinstimmung gefunden wird. Wenn dieInteger
Wert null erreicht hat, dann entfernen Sie die (Entity, ganze Zahl) den Eintrag aus der map.Dieser Algorithmus läuft in linearer Zeit, vorausgesetzt, Sie haben implementiert eine effiziente
hashCode()
Methode.Leicht aktualisiert man bedenkt, die null-Werte:
Wenn Sie nicht besorgt über Fälle wie (2,2,3), (2,3,3):