galera to com a seguinte duvida, tenho que implementar um metodo que recebe uma frase e retorna um mapa mostrando quantas vezes cada palavra apareceu na frase,
alguem saca como fazer isso?
galera to com a seguinte duvida, tenho que implementar um metodo que recebe uma frase e retorna um mapa mostrando quantas vezes cada palavra apareceu na frase,
alguem saca como fazer isso?
Bom, eu pensei agora em algo como o seguinte:
Quebra a frase em palavras usando split, que retorna um String[].
Percorre esse vetor, utilizando a seguinte lógica:
Se a palavra não está no mapa, adiciona ela como chave e com valor 1.
Se a palavra já está no mapa, atualiza seu valor para valor anterior + 1.
Problema resolvido…ou não?
Bom, eu pensei agora em algo como o seguinte:Quebra a frase em palavras usando split, que retorna um String[].
Percorre esse vetor, utilizando a seguinte lógica:Se a palavra não está no mapa, adiciona ela como chave e com valor 1.
Se a palavra já está no mapa, atualiza seu valor para valor anterior + 1.
Problema resolvido..ou não?
rapaz eu fiz isso,
o problema é que as vezes funciona e as vezes nao,
abaixo segue a execuçao e o codigo,
Frase frase = new Frase("o rato e o rato");
public Map<String, Integer> contaPalavras(){
String[] palavras = frase.split(" ");
int valor=1;
for (String p : palavras){
if (frequencia.containsKey(p))
frequencia.put(p, valor++);
frequencia.put(p, valor);
}
return frequencia;
}
a saída é essa
{e=1, rato=3, o=2}
eu nao sei o que tá acontecendo =/
eis que surge outra duvida,
como ordenar um hashset de string por ordem alfabetica?
Primeiro passo é dividir o texto em pedaços e limpar os pedaços (excluir pontos, vírgulas e etc…)
Segundo passo:
frequencia.put(p,frequencia.get(p) + 1)
eis que surge outra duvida,como ordenar um hashset de string por ordem alfabetica?
paulosouto wrote:
eis que surge outra duvida,como ordenar um hashset de string por ordem alfabetica?
java.lang.JJunior
Transforme em uma Lista.
No caso apresentado apenas mude de HashSet para TreeSet
Att
Bom, eu pensei agora em algo como o seguinte:Quebra a frase em palavras usando split, que retorna um String[].
Percorre esse vetor, utilizando a seguinte lógica:Se a palavra não está no mapa, adiciona ela como chave e com valor 1.
Se a palavra já está no mapa, atualiza seu valor para valor anterior + 1.
Problema resolvido..ou não?
rapaz eu fiz isso,
o problema é que as vezes funciona e as vezes nao,
abaixo segue a execuçao e o codigo,Frase frase = new Frase("o rato e o rato"); public Map<String, Integer> contaPalavras(){ String[] palavras = frase.split(" "); int valor=1; for (String p : palavras){ if (frequencia.containsKey(p)) frequencia.put(p, valor++); frequencia.put(p, valor); } return frequencia; }a saída é essa
{e=1, rato=3, o=2}
eu nao sei o que tá acontecendo =/
Sua lógica está quase correta. Mas faltou um else ali dentro do for, não?
E você pode utilizar um TreeMap se deseja que as chaves fiquem em ordem alfabética.