trzeba połączyć n hashmaps usytuowany w pętli, jak pokazano poniżej na javy 8 połączenia lub coś:Jak stosować Java 8 funkcję scalania przez liczbę n hashmaps
Mapa 1: {Name:XXX,Phn:123,Work:""}
Mapa 2: {Name:XXX,Phn:456,Work: xyz}
Mapa 3: {Name:XXX,Phn:789,Work:""}
chciałbym uzyskać wyjście jak poniżej:
{
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
}
Kiedy próbuję użyć putall jak ten
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;
}
Jeżeli wartość duplikatu klucza jest ""
, poprzednia wartość zostanie zastąpiona nową. Muszę łączyć wartości, zamiast je zastępować.
Co '123/456/789' oznacza? Czy chcesz uzyskać "Map>"? –
Tunaki
wystarczy podać wartości ... przepraszam za brak jasności ... – nelz
Wygląda na to, że powinieneś używać niestandardowej klasy z 3 polami 'name',' phone' i 'work' zamiast' HashMap'. –