私は2つを持っていますList<Map<String, String>>
私はDBMSを照会しているかのようにLEFT OUTER JOINしたい交差するデータを持つオブジェクト。ここでは、各リストの地図の説明は次のとおりです。Java 6のList <Map <String、String >>オブジェクトを使用して 'LEFT OUTER JOIN'をシミュレートするにはどうすればよいですか?
マップAキー: ID、リソース、アドレス
リスト1つのデータ:
[
(id=1, resource="a", address="123 abc"), (id=2, resource="b", address="987 xyz")
]
地図Bキー: ID、名前
リスト2のデータ:
[
(id=1, name="ZYX"), (id=1, name="WVU")
]
私は何だろう「ID」キーに一致すると、次の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")
]
最初に私がCollections.compare()
を使用してみました。最初の一覧から各項目をとる
- >最初の項目と新しい項目に「ID」に一致する(もしあれば)から項目をマージ第
List<Map<String, String>>
- に対応する項目を見つける
- ではなく、他の側に、片側に登録しよ処理する新しい
List<Map<String, String>>
に新しいアイテムを追加します。私はいつも 'id' = 1のレコードと 'id' = 2のレコードを持っています。
私はこれは、Java 8以上でStreamsを使用してはるかに容易になることを承知しているが、私はこれは不明であるJavaの6
で立ち往生しています。マップ 'B'には、キーが' id'であると仮定して重複キーがあります。キーが_both_ 'id'と' name'で構成されている場合、 'A'には' name'がないので、マップ 'Aには何も一致しません。これ以上明確にする必要があります。 –
@JimGarrisonマップBはありません。マップのリストです。キーのセットが同じで、いくつかは同じ値にマッピングされています。 – shmosel
OK、私はそれを参照してください、しかし、私は、文の 'Map A keys:id、resource、address'は' Map key:id、value:(resource、address) 'でなければなりません。 –