Tenho esse algorítimo que lê um determinado texto e mostra quantas vezes a palavra aparece.
O problema:
No [color=red]System.out.println("texto = '" + keyString + "' contagem = '" + valueString + "'");[/color] o resultado é obtido.
Mas quando peço para aparecer o resultado em [color=darkred]jTextArea2.setText("texto = '" + keyString + "' contagem = '" + valueString + "'");
[/color] só aparece a contagem da última palavra do texto, por que será?
Outra coisa:
Tem como ordenar os resultado?
Como aparecer a palavra com maior frequência primeiro e ir decrescendo.
Como neste site aqui.
http://rainbow.arch.scriptmania.com/tools/word_counter.html
import java.util.HashMap;
import java.util.Iterator;
import java.util.StringTokenizer;
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
HashMap<String, Integer> lista = new HashMap<String, Integer>();
//String texto = "minha";
jTextArea1.getText();
StringTokenizer st = new StringTokenizer(jTextArea1.getText());
while (st.hasMoreTokens()) {
String token = st.nextToken();
if(lista.get(token) != null) {
Integer total = lista.get(token);
lista.put(token, total = total+1);
} else {
lista.put(token, 1);
}
}
for (Iterator iter = lista.keySet().iterator(); iter.hasNext();) {
String keyString = (String) iter.next();
Integer valueString = lista.get(keyString);
System.out.println("texto = '" + keyString + "' contagem = '" + valueString + "'");
jTextArea2.setText("texto = '" + keyString + "' contagem = '" + valueString + "'");
}
}
