é usar a estrutura HashMap no formato <String(Palavra),Integer(Vezes que apareceu)>.
Isto creio eu por sua alta velocidade de consulta.
Preciso ter no final de varrer um texto bastante grande, de um top 10 das palavras que mais apareceram
no texto que foi scaneado.
O que voces experientes programadores em Java me sugerem ? Que eu use o HashMap mesmo e tente
fazer um top 10 num ArrayList, organizando ele a cada iteracao de palavra ? Ou algor diferente talvez …
Algumas idéias ?
acredito que TreeMap, já que os objetos são ordenaveis, deve facilitar o processo…
da uma olhada nesse esquema
esse outro esquema pode ajudar tb
a fonte é do blog do sergio taborda
…
Ah so uma coisa, não sei, mas talvez ter que mander a ordenação torne o TreeMap mais lento…
tnaires
Olá
Uma outra idéia é você implementar a seguinte classe:
publicclassWordCountimplementsComparable<WordCount>{privateStringword;privateintcount;publicWordCount(Stringword){this.word=word;}publicStringgetWord(){returnword;}publicintgetCount(){returncount;}publicvoidincCount(intinc){count+=inc;}// O compareTo foi implementado de forma a ordenar as contagens em ordem decrescente.publicintcompareTo(WordCountother){returnother.count-this.getCount();}// O equals retorna true se as palavras forem a mesma.publicbooleanequals(Objectother){if(other==null||!(otherinstanceofString)){returnfalse;}returnword.equals((String)other);}publicinthashCode(){returnword.hashCode();}publicStringtoString(){returnword+": "+count;}}
E agora construa um Set dessa classe para armazenar as palavras e suas contagens ( o Set não vai permitir que palavras repetidas sejam armazenadas por causa do método equals, definido acima ).
// Palavra 1WordCountwc1=newWordCount("Word1");wc1.incCount(10);// Palavra 2WordCountwc2=newWordCount("Word2");wc2.incCount(5);// Palavra 3WordCountwc3=newWordCount("Word3");wc3.incCount(2);// Adicionando a um set fora de ordemSet<WordCount>set=newTreeSet<WordCount>();set.add(wc2);set.add(wc1);set.add(wc3);
A estrutura de dados se encarrega de ordenar as palavras em ordem decrescente do número de ocorrências.
Abraços
kirill
Pocha …
Muito obrigado à voces dois …
Gostei da ideia de tnaires ja que Lavieri disse que
pode ficar lento por ser TreeMap, pra falar a
verdade eu ja estava começando a estuda-lo.
Mas preferia ficar com HashMaps por serem os mais rapidos.
Valeu msm