(Desculpem, sem querer enviei a mensagem truncada. )

Voces estão fazendo uma senhora confusão.
Se você quer comparar, digamos, duas instâncias de Aluno pela idade, então o
compare() de um Comparator<Aluno> seria:
    public int compare(Aluno a1, Aluno a2){
           return ai.getIdade() - a2.getIdade();
   }

  Note que você está comparando Alunos, pelo critério de comparar as suas
idades!
  O método compare(), assim como o compareTo(), pode ser qualquer método que
retorne um inteiro.  Os argumentos desses métodos devem ser objetos, mas as
contas podem ser feitas internamente com ints, como no caso acima.

  Jonathan

2008/10/19 Miguel Jonathan <[EMAIL PROTECTED]>

> Voces estão fazendo uma senhora confusão.
>
> Se você quer comparar, digamos, duas instâncias de Aluno pela idade, então
> o compare() de um Comparator seria:
>     public int compare(Aluno a1, Aluno a2){
>
>
>
> 2008/10/16 Peter <[EMAIL PROTECTED]>
>
>>  BTW, qual é o erro que dá, afinal, que até agora vc não nos disse?!
>>
>> Abraço!
>>
>>  Peter P. Lupo
>> Undergraduating in Computer Science DCC/UFRJ
>> Sun Certified Java Associatehttp://pplupo.googlepages.com/
>> Cell. +55 (21) 81742487
>>
>>
>>
>> Igor Ramos wrote:
>>
>> Por que não enviar para a lista? É algum segredo ou algo do tipo?
>> É um fato, no mínimo, curioso funcionar com double e não funcionar com int
>> ou usando new Integer, se virmos o código também poderemos ver o que está
>> errado e também aprenderemos, tendo mais chances de não acontecer o mesmo
>> problema quando programarmos.
>> Se fosse uma lista, algum trabalho que valesse pontos eu até entenderia,
>> mas não vejo motivo para esconder de nós o motivo dessa situação inusitada.
>>
>> [ ]s
>>
>> Igor Ramos
>>
>> 2008/10/16 Peter <[EMAIL PROTECTED]>
>>
>>>  Me mande o código (privado, não mande pra lista) pra eu ver, por favor.
>>>
>>> Abraço!
>>>
>>>   Peter P. Lupo
>>> Undergraduating in Computer Science DCC/UFRJ
>>> Sun Certified Java Associatehttp://pplupo.googlepages.com/
>>> Cell. +55 (21) 81742487
>>>
>>>
>>>
>>> Jorge Ricardo Jau Junior wrote:
>>>
>>> Curioso... Só funcionou com double... usando new Integer dá o mesmo erro.
>>>
>>> 2008/10/15 Jorge Ricardo Jau Junior <[EMAIL PROTECTED]>
>>>
>>>> Ok, vou testar.
>>>>
>>>> 2008/10/15 Peter <[EMAIL PROTECTED]>
>>>>
>>>>> Cara, seguinte...
>>>>>
>>>>> se getAno retorna int, enxergue a expressão "a1.getAno()" como um int.
>>>>>
>>>>> Assim, o que vc está fazendo é:
>>>>>
>>>>> int1.compareTo(int2);
>>>>>
>>>>> como int é tipo primitivo, não tem compareTo.
>>>>>
>>>>> A solução que eu sugeri foi:
>>>>>  new Integer(int1).compareTo(new Integer(int2));
>>>>>
>>>>> ou seja,
>>>>>
>>>>> new Integer(a1.getAno()).compareTo(new Integer(a2.getAno()));
>>>>>
>>>>> Abraço!
>>>>>
>>>>>  Peter P. Lupo
>>>>> Undergraduating in Computer Science DCC/UFRJ
>>>>> Sun Certified Java Associatehttp://pplupo.googlepages.com/
>>>>> Cell. +55 (21) 81742487
>>>>>
>>>>>
>>>>>
>>>>>  Jorge Ricardo Jau Junior wrote:
>>>>>
>>>>> Nossa...
>>>>> Na verdade, estou querendo fazer uma classe que implemente Comparator,
>>>>> daí ela precisa do método compare() reescrito.
>>>>> O problema é quando declaro que comparo os atributos primitivos.
>>>>> Por exemplo: minha classe compara os anos em instâncias de alunos, por
>>>>> exemplo.
>>>>> Se uso:
>>>>>
>>>>>            a1.getAno().compareTo(a2.getAno());
>>>>>
>>>>> e ano for um int ou double o eclipse chia.
>>>>>
>>>>> Espero não estar repetindo dúvidas anteriores.
>>>>>
>>>>> Saudações.
>>>>>
>>>>> 2008/10/14 Peter <[EMAIL PROTECTED]>
>>>>>
>>>>>> Pode. Mas não é óbvio para quem lê. Eu faria "return new
>>>>>> Integer(int1).compareTo(new Integer(int2));"
>>>>>>
>>>>>> Abraço!
>>>>>>
>>>>>>  Peter P. Lupo
>>>>>> Undergraduating in Computer Science DCC/UFRJ
>>>>>> Sun Certified Java Associatehttp://pplupo.googlepages.com/
>>>>>> Cell. +55 (21) 81742487
>>>>>>
>>>>>>
>>>>>>
>>>>>>  Gabriel Pires wrote:
>>>>>>
>>>>>> Não poderia usar int1-int2 ? =P
>>>>>>
>>>>>> 2008/10/14 Peter <[EMAIL PROTECTED]>
>>>>>>
>>>>>>> Pelo que entendi, o problema é que o método não recebe como parâmetro
>>>>>>> tipos primitivos, apenas classes.
>>>>>>> Lembre-se que o compareTo só serve para dizer como comparar
>>>>>>> instâncias da classe que se está codificando, logo não faz sentido 
>>>>>>> receber
>>>>>>> um tipo primitivo, já que vc não está codificando um tipo primitivo, e 
>>>>>>> sim
>>>>>>> uma classe.
>>>>>>> Outra coisa que vale lembrar é que coleções só aceitam instâncias,
>>>>>>> não aceitam tipos primitivos. E as subclasses  de Number (Double, 
>>>>>>> Integer,
>>>>>>> etc) já implementam Comparable.
>>>>>>>
>>>>>>> Se vc fizer:
>>>>>>>
>>>>>>> Collection<Integer> c = new TreeSet<Integer>();
>>>>>>> c.add(1);
>>>>>>>
>>>>>>> o compilador vai entender
>>>>>>>
>>>>>>> Collection<Integer> c = new TreeSet<Integer>();
>>>>>>> c.add(new Integer(1));
>>>>>>>
>>>>>>> O nome deste recurso é autoboxing. E a ordenação estará garantida.
>>>>>>>
>>>>>>>
>>>>>>> Abraço!
>>>>>>>
>>>>>>> P.S.: Buss, no compareTo vc não pode usar int1>=int 2 pq se for
>>>>>>> maior vc deve retornar um valor diferente de 0 e se for igual vc deve
>>>>>>> retornar 0. :¬þ então dificilmente vc vai usar o comparador >=. *rs*
>>>>>>>
>>>>>>>  Peter P. Lupo
>>>>>>> Undergraduating in Computer Science DCC/UFRJ
>>>>>>> Sun Certified Java Associatehttp://pplupo.googlepages.com/
>>>>>>> Cell. +55 (21) 81742487
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Bruno Buss wrote:
>>>>>>>
>>>>>>> Juro que não entendi...
>>>>>>>
>>>>>>> Qual o problema em usar int1 == int2? int1 >= int2? etc...
>>>>>>>
>>>>>>> 2008/10/14 Jorge Ricardo Jau Junior <[EMAIL PROTECTED]>
>>>>>>>
>>>>>>>> O método compareTo() não faz comparações com tipos primitivos, int e
>>>>>>>> double....
>>>>>>>>
>>>>>>>> Alguém sabe como resolver isso? Tipo, queria passar uma comparação
>>>>>>>> de inteiros sem ter que ficar convertendo...
>>>>>>>>
>>>>>>>> Saudações!
>>>>>>>>
>>>>>>>> --
>>>>>>>> "A verdadeira luta só começa quando achamos que não dá pra lutar
>>>>>>>> mais."
>>>>>>>>
>>>>>>>> "Aquele que começou a boa obra em minha vida não terminou."
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Bruno C. Buss
>>>>>>> http://magoobr.blogspot.com/
>>>>>>> http://www.dcc.ufrj.br/~brunobuss/<http://www.dcc.ufrj.br/%7Ebrunobuss/>
>>>>>>>
>>>>>>> Aluno do DCC - UFRJ - www.dcc.ufrj.br
>>>>>>>
>>>>>>> if( ((*node)->valor) < (((*heap)[((*node)->gr)])->valor)) /* WTF?! */
>>>>>>>
>>>>>>> "Throughout your life, advance daily, becoming more skillful than
>>>>>>> yesterday, more skillful than today. This is never-ending." - Hagakure
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> "A verdadeira luta só começa quando achamos que não dá pra lutar mais."
>>>>>
>>>>> "Aquele que começou a boa obra em minha vida não terminou."
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> "A verdadeira luta só começa quando achamos que não dá pra lutar mais."
>>>>
>>>> "Aquele que começou a boa obra em minha vida não terminou."
>>>>
>>>
>>>
>>>
>>> --
>>> "A verdadeira luta só começa quando achamos que não dá pra lutar mais."
>>>
>>> "Aquele que começou a boa obra em minha vida não terminou."
>>>
>>>
>>>
>>>
>>>
>>
>>
>> --
>> Igor Ramos
>>
>>
>>
>> >>
>>
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Comp 
2 - Geral" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/comp2-geral?hl=en
-~----------~----~----~----~------~----~------~--~---

Responder a