ho bisogno di unire n HashMaps ideale in un ciclo come mostrato di seguito utilizzando Java 8 unione o qualcosa:come usare Java 8 funzione di unione per il numero n di HashMaps
Mappa 1: {Name:XXX,Phn:123,Work:""}
Mappa 2: {Name:XXX,Phn:456,Work: xyz}
Mappa 3: {Name:XXX,Phn:789,Work:""}
vorrei ottenere un output come di seguito:
{
Name:XXX, // if all values for a key are same take one
Phn:123/456/789 // merge all non null values for same key
Work:xyz // make sure non-null values are never replaced
}
quando provo ad usare putAll come questo
public Map<String,String> mergeOriginalDataMaps(List<Integer> indexList, List<Map<String,String>> originalData) {
Map<String,String> tmpMap = new HashMap<String,String>();
for (int index : indexList) {
tmpMap.putAll(originalData.get(index));
}
return tmpMap;
}
Se il valore della chiave duplicata è ""
, il valore precedente viene sostituito con quello nuovo. Ho bisogno di concatenare i valori piuttosto che sostituirli.
Cosa '123/456/789' significa? Vuoi un 'Map>' come risultato? –
Tunaki
solo bisogno di concatenare i valori ... mi dispiace per non essere chiaro ... – nelz
Sembra che dovresti usare una classe personalizzata con 3 campi 'nome',' telefono' e 'lavoro' piuttosto che un' HashMap'. –