| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/07/2009 14:01:14
|
rmalati
Virtual Machine Man
![[Avatar]](/images/avatar/3bc8f7011e08bfe6830c967b497bdf6d.jpg)
Membro desde: 26/11/2007 09:10:30
Mensagens: 593
Localização: Jundiaí-SP
Offline
|
Pessoal,
pesquisei mas não consegui uma resposta....
Eu tenho a minha Classe AgenciaAutomoveis classificada por Modelo da seguinte forma...
O código imprime a classificação por nome do Carro: {Ano: 2009 Modelo: EcoSport =22000, Ano: 1999 Modelo: Gol =7500, Ano: 2007 Modelo: Palio =15000, Ano: 1992 Modelo: Uno =2300}
Pois bem...
Mas e se eu quiser que a classificação seja feita pelo Ano, é possível?
Se eu utilizar um List, eu consigo classificar através de Collections.sort(), passando a minha classe e o Comparator desejado.
Mas no caso do TreeMap este Comparator é passado no momento da criação do objeto, ai fiquei com esta dúvida.
Sinceramente acho que não tem como, só se tiver alguma gambiarra pois o objeto foi criado pra ser classificado dessa maneira.
Alguém pode ajudar?
Grato!!!
This message was edited 1 time. Last update was at 23/07/2009 14:03:13
|
Rodrigo Malatesta Barbosa
Graduando em Tecnologia Informática Unicamp
SCJP 1.6 - 93%
"A disciplina é o caminho mais curto para o sucesso"
"Se não puder destacar pelo talento, vença pelo esforço. (Provérbio indiano)" |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/07/2009 14:11:54
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
a) Dentro da medida do possível, use sempre Generics (a menos que você tenha de usar Java 1.4 ou anterior. Shit happens...)
b) Você tem de criar um TreeMap diferente (talvez com os mesmos dados) para cada critério de ordenação. Ou seja, crie um método que já insere seu objeto AgenciaAutomoveis em vários treemaps, cada qual com seu Comparator diferente. Crie outro método que remove seu objeto AgenciaAutomoveis dos vários treemaps também.
c) Normalmente é aconselhável você criar variáveis com o tipo da interface, não da classe, a menos que você tenha de usar algum método que só existe na classe.
d) Um comparator normalmente não precisa ter várias instâncias, apenas uma.
(Concordo que generics é realmente muito verboso, mas depois você economiza com castings.)
This message was edited 2 times. Last update was at 23/07/2009 14:13:55
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/07/2009 14:57:27
|
rmalati
Virtual Machine Man
![[Avatar]](/images/avatar/3bc8f7011e08bfe6830c967b497bdf6d.jpg)
Membro desde: 26/11/2007 09:10:30
Mensagens: 593
Localização: Jundiaí-SP
Offline
|
Entendi....
Então na vida real talvez seja muito custoso ficar criando vários métodos para ter classificações diferentes, pois vou ter que os mesmos objetos em vários TreeMap´s.
É isso mesmo?
Agora, com relação ao exame, é comum ter várias classificações usando TreeMap?
Valeu.
|
Rodrigo Malatesta Barbosa
Graduando em Tecnologia Informática Unicamp
SCJP 1.6 - 93%
"A disciplina é o caminho mais curto para o sucesso"
"Se não puder destacar pelo talento, vença pelo esforço. (Provérbio indiano)" |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/07/2009 15:03:38
|
Lavieri
GUJ Master
![[Avatar]](/images/avatar/7b41bfa5085806dfa24b8c9de0ce567f.png)
Membro desde: 27/01/2004 13:39:31
Mensagens: 1851
Localização: João Pessoa / PB
Offline
|
Com relação ao exame não... um comparator apenas por exercicio, se houver...
.........
Você só usa mesmo uma instância, não há sentido haver várias...
para reordenar, so criando um novo TreeMap ... algo como:
SortedMap<AgenciaAutomoveis, Double> outraOrdem = new TreeMap<AgenciaAutomoveis, Double>(novoComparator);
outraOrdem.putAll(mapaAntigo);
|
Sun Certified Java Programmer (SCJP 6)
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999
Meu blog -> http://blog.tomazlavieri.com.br/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/07/2009 15:31:09
|
rmalati
Virtual Machine Man
![[Avatar]](/images/avatar/3bc8f7011e08bfe6830c967b497bdf6d.jpg)
Membro desde: 26/11/2007 09:10:30
Mensagens: 593
Localização: Jundiaí-SP
Offline
|
hum... interessante....
Não sabia deste método putAll(mapaAntigo)
obrigado.
|
Rodrigo Malatesta Barbosa
Graduando em Tecnologia Informática Unicamp
SCJP 1.6 - 93%
"A disciplina é o caminho mais curto para o sucesso"
"Se não puder destacar pelo talento, vença pelo esforço. (Provérbio indiano)" |
|
|
 |
|
|