em que a string é uma palavra e a list são os anos em que essa palavra ocorreu na base de dados.
Preciso ordenar esse map pelo tamanho da list. A palavra que tiver mais ocorrência fica mais bem colocada.
Não sei se TreeMap é a melhor opção. Sei também que tenho que implemetar a interface Comparator mais
não sei como. Alguém tem alguma idéia ?
Você pode criar uma classe que encapsule os 2, tendo a String e a lista, e nessa classe você implementa a interface Comparable, comparando pelo tamanho da lista.
herculanogn
Deixa eu ver se entendi, ficaria +/- assim
publicclassRankimplementsComparator<Rank>{Stringterm;List<Integer>occu=newArrayList<Integer>();//Metodos get's e set's@Overridepublicintcompare(Rankr1,Rankr2){if(r2.occu.size()<r1.occu.size())return-1;elsereturn1;}}
Minha dúvida é como eu faria o TreeMap ordenar pelo Objeto Rank, já que eu teria um TreeMap do tipo:
Você não vai ter um TreeMap mais. Acho que um TreeSet funcionaria, caso você queira evitar termos repetidos, terá que implementar equals em Rank também.
herculanogn
Mas e se eu quiser pesquisar um objeto do tipo Rank no TreeSet pelo atributo term
tem como ??
herculanogn
Então galera o TreeSet funcionou perfeitamente, está ordenando corretamente. Mas ainda tenho um problema.
Preciso pesquisar se um termo está no rankTerms. Tentei criar um uma Objeto Rank e usar a função contains, mas não funcionou. Tiver problemas também com a função remove do TreeSet.
Olhando o Javadoc vi que as funções contains e remove do TreeSet recebem um parametro Object. Tentei dar um cast ao usar a função mais o resultado foi o mesmo.
A função contains e remove só retornam false.