Então, eu tenho dois mapas onde a chave é baseado fora do comprimento da palavra. Sempre que há uma palavra com a mesma quantidade de comprimento, eu quero que ele adicionou a essa chave.
Eu quero fazer isso usando a map.merge()
função, no entanto, depois de olhar para a documentação estou inseguro sobre como fazê-lo. Eu tentei olhar para outros recursos, mas muitos não têm ajudado.
Map<Integer, String> map = new HashMap<Integer, String>();
Map<Integer, String> map = new HashMap<Integer, String>();
String[] wordsSplit = doc.split(" ");
for(int i = 0; i < wordsSplit.length; i++) {
int key = wordsSplit[i].length();
Map<Integer, String> tempMap = new HashMap<Integer, String>();
tempMap.put(key, wordsSplit[i]);
//merge here
map.merge(key, map.keySet(), map.get(key) + ", " + wordsSplit[i]);
}
Edit: Esta questão é diferente, porque aqui estou eu tentando descobrir como mapear no contexto de fundir o mapa temporário para o mapa de idade.
Por exemplo, isto significa que se há vários itens que compartilham a mesma chave, então seria mais revelar-se como: chave: "Car, bar, Tar"
Primeiro você precisa de uma função direta para palavras concat com o mesmo comprimento, separados com ", "
;
BiFunction<String, String, String> mergeFunction = (i, j) -> {
return i + ", " + j;
};
Em seguida map.merge(key, x, mergeFunction);
funde-se os elementos de wordsSplit
matriz de acordo com o seu comprimento. Abaixo key
é o comprimento da palavra, x
significawordsSplit[i]
Stream.of(wordsSplit).forEach(x -> {
int key = x.length();
map.merge(key, x, mergeFunction);
});
Ou você pode apenas após o corpo da função merge (i, j) -> { return i + ", " + j; }
em map.merge()
vez de definir mergeFunction
separadamente:
Stream.of(wordsSplit).forEach(x -> {
int key = x.length();
map.merge(key, x, (i, j) -> { return i + ", " + j; });
});