私は以下の構造にMap
を持っています。私はそのキーと値を反転したいと思います。Java8ストリームを使用したHashMapのキーを反転する
Map<String, List<String>> dataMap
サンプルデータ:
acct01: [aa, ab, ad],
acct02: [ac, ad]
acct03: [ax, ab]
は、このデータをに変換することにしたい、
aa: [acct01],
ab: [acct01, acct03],
ac: [acct02],
ad: [acct01, acct02],
ax: [acct03]
は、Java 8があれば知りたい - 地図を変換するためのストリーム方法。
ストリームを使用して実装する方法を探してい
Map<String, List<String>> originalData = new HashMap<String, List<String>>();
originalData.put("Acct01", Arrays.asList("aa", "ab", "ad"));
originalData.put("Acct02", Arrays.asList("ac", "ad"));
originalData.put("Acct03", Arrays.asList("ax", "ab"));
System.out.println(originalData);
Map<String, List<String>> newData = new HashMap<String, List<String>>();
originalData.entrySet().forEach(entry -> {
entry.getValue().forEach(v -> {
if(newData.get(v) == null) {
List<String> t = new ArrayList<String>();
t.add(entry.getKey());
newData.put(v, t);
} else {
newData.get(v).add(entry.getKey());
}
});
});
System.out.println(newData);
入力と出力、 {Acct01=[aa, ab, ad], Acct02=[ac, ad], Acct03=[ax, ab]} {aa=[Acct01], ab=[Acct01, Acct03], ac=[Acct02], ad=[Acct01, Acct02], ax=[Acct03]}
(ストリームなし)での私の現在の実装。
従来の方法を使用して実装されています..まだStream()を使用して実装する方法を探しています – Bala