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?
[quote=rod.attack]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?[/quote]
rapaz eu fiz isso,
o problema é que as vezes funciona e as vezes nao,
abaixo segue a execuçao e o codigo,
[code]
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§)
frequencia.put(p, valor++);
frequencia.put(p, valor);
}
return frequencia;
}[/code]
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)
[quote=paulosouto]eis que surge outra duvida,
como ordenar um hashset de string por ordem alfabetica?[/quote]
Transforme em uma Lista. :lol:
[quote]paulosouto wrote:
eis que surge outra duvida,
como ordenar um hashset de string por ordem alfabetica?
[quote]java.lang.JJunior
Transforme em uma Lista.[/quote] [/quote]
No caso apresentado apenas mude de HashSet para TreeSet
Att
[quote=paulosouto][quote=rod.attack]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?[/quote]
rapaz eu fiz isso,
o problema é que as vezes funciona e as vezes nao,
abaixo segue a execuçao e o codigo,
[code]
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§)
frequencia.put(p, valor++);
frequencia.put(p, valor);
}
return frequencia;
}[/code]
a saída é essa
{e=1, rato=3, o=2}
eu nao sei o que tá acontecendo =/[/quote]
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.