Ich habe 2 List<Map<String, String>>
Objekte, die sich überschneidende Daten haben, die ich OUTER JOIN verlassen möchte, als ob ich ein DBMS abfragen würde. Hier ist eine Beschreibung der Karten in jeder Liste:Wie simuliere ich eine 'LINKE OUTER JOIN' mit List <Map <String, String >> Objekte in Java 6?
Karte A Schlüssel: id, Ressource, Adresse
Daten der Liste 1:
[
(id=1, resource="a", address="123 abc"), (id=2, resource="b", address="987 xyz")
]
Karte B Tasten: id, name
List 2 Daten:
[
(id=1, name="ZYX"), (id=1, name="WVU")
]
Was würde ich gerne auf den ‚id‘ Schlüssel zu tun, ist passend und am Ende mit den folgenden List<Map<String, String>>
:
[
(id=1, resource="a", address="123 abc", name="ZYX"),
(id=1, resource="a", address="123 abc", name="WVU"),
(id=2, resource="b", address="987 xyz")
]
Zuerst habe ich versucht, unter Verwendung von Collections.compare()
;
- jedes Element aus der ersten Liste Taking>
- den entsprechenden Eintrag zu finden, in den zweiten
List<Map<String, String>>
- Merging das Element aus dem ersten Punkt und das Spiel (falls vorhanden) auf ‚id‘ in ein neues Element
- Hinzufügen das neue Element in eine neue
List<Map<String, String>>
Welche der auf der einen Seite Griffe JOIN, aber nicht auf der anderen Seite. Ich habe immer einen Datensatz mit 'id' = 1 und einen Datensatz mit 'id' = 2.
Ich bin mir bewusst, dass dies viel einfacher sein würde Streams mit Java 8 oder höher, aber ich bin mit Java 6.
stecken
Dies ist unklar. In der Map 'B' haben Sie doppelte Schlüssel, vorausgesetzt, der Schlüssel ist 'id'. Wenn der Schlüssel aus _both_ 'id' und' name' besteht, gibt es keine Übereinstimmung mit irgendetwas in Map'A, da es keinen 'name' in' A' gibt. Du wirst das mehr klären müssen. –
@JimGarrison Es gibt keine Karte B. Es ist eine Liste von Karten, mit dem gleichen Satz von Schlüsseln, einige Zuordnung zu identischen Werten. – shmosel
OK, ich sehe das, aber ich glaube, die Aussage 'Map A Schlüssel: ID, Ressource, Adresse' sollte' Map A Schlüssel: ID, Wert: (Ressource, Adresse) 'für den Rest der Frage sinnvoll sein. –