Prezados;
O que posso utilizar para a criação de um método que tenha como construtor um [] de Strings, e retorne um [] Strings com as Strings em ordem de maior freqüência, e quantas vezes ela se encontra no vetor?
Há alguma método, que realiza este tipo de operação?
Ou vou ter de realizar, comparação em todos os tipos de Strings, que possa conter o meu vetor?
Agradeço a todos.
Você foi muito confuso em sua abordagem. “método que tenha como construtor”??? WTF?? Pelo que entendi você quer algo do tipo:
Se o cara tiver
[0] “casa”
[1] “janela”
[2] “porta”
[3] “porta”
[4] “porta”
[5] “janela”
Nesse caso porta aprece 3 vezes no array, enquanto janela 2 e casa 1, então retornaria isso:
[0] “porta”
[1] “janela”
[2] “casa”
??
Isso que você quer? Se for da para fazer, mas não há método no array que faça isso automaticamente não.
ViniGodoy
Use um TreeMap<String, Integer> para contar a frequência de cada elemento do seu vetor.
Depois, crie uma lista de strings com as chaves e faça um comparator que ordene baseado no mapa.
Soa difícil, mas não é.
peczenyj
é o equivalente awk para
{ array[“palavra”]++ }
a cada palavra
T
thingol
Nada como o Sermão da Montanha*… Eu sabia que tinha uma coisa dessas que havia postado um dia desses.
(Eu queria achar uma versão que começasse com "Olhai os lírios do campo", que é o título de um livro de Érico Veríssimo.)
importjava.util.*;classTabelaFrequencias2{/** * Note que várias palavras podem ter a mesma freqüência. Portanto, * não podemos usar um Map < Integer, String > e sim um * Map < Integer, Set < String > >. */publicstaticvoidmain(String[]args){Stringtexto="Considerai os lírios, como eles crescem; não trabalham, nem "+" fiam; e digo-vos que nem ainda Salomão, em toda a sua glória, se vestiu "+" como um deles. E, se Deus assim veste a erva que hoje está no campo e "+" amanhã é lançada no forno, quanto mais a vós, homens de pouca fé? Não "+" pergunteis, pois, que haveis de comer, ou que haveis de beber, e não "+" andeis inquietos.";String[]palavras=texto.split("[ ,;.:?-]+");Map<String,Integer>tabFreq=newTreeMap<String,Integer>();for(inti=0;i<palavras.length;++i){Stringpalavra=palavras[i];Integerfreq=tabFreq.get(palavra);if(freq==null){freq=0;}tabFreq.put(palavra,freq+1);}System.out.println("Ordenando (ordem decrescente) por freqüências");Map<Integer,Set<String>>tabInv=newTreeMap<Integer,Set<String>>(newComparator<Integer>(){publicintcompare(Integeri1,Integeri2){return-i1.compareTo(i2);}});// Invertendo a tabela for(Map.Entry<String,Integer>tab:tabFreq.entrySet()){Integerfreq=tab.getValue();Stringpalavra=tab.getKey();if(!tabInv.containsKey(freq)){tabInv.put(freq,newTreeSet<String>());}tabInv.get(freq).add(palavra);}for(Integerfreq:tabInv.keySet()){System.out.println("Palavras com a freqüência "+freq);System.out.println(" "+tabInv.get(freq));}}}
EDIT - Hum, acho que não era bem no Sermão da Montanha, de onde é que vem o tal trecho que usei como exemplo?