ae pessoal to com maior duvida na implementacao das duas interfaces… assim nao conseguir abstratir sua sintaxe de implementação… quem tiver ai um codigo simples usando as mesma fico agradecido… eu uso elas quando tenho que classficar instancia de uma classe? :S n sei direito to meio confuso
“Comparable” você usa quando vai implementar uma classe que tem uma determinada “ordem natural”.
Por exemplo, digamos que você tenha uma classe Cliente, contendo um atributo “id”. Você ordenaria os clientes por esse ID.
“Comparator” você usa quando vai implementar uma classe que serve para comparar outras classes.
Por exemplo, digamos que você queira ordenar uma lista de objetos da classe Cliente pelo atributo “nome”. Você pode ordenar os clientes usando esse atributo, mas como ele já implementa Comparable, você precisa de uma outra classe que serve para efetuar essa comparação alternativa.
LPJava
assim thingol o “Comparable” eu informo qual vai ser a regra de classificacao:
e o Comparator, posso ter varios tipos de classficicação exemplo: idade, cor, sexo etc… se baseando na class Clientes?
T
thingol
// Java 1.4 ou anteriorclasseClienteimplementsComparable{Stringcod;// Note que para implementar corretamente Comparable, você// precisa usar a declaração idêntica - é Object, não Cliente.publicintcompareTo(Objectd){// Se o campo implementar Comparable, como é o caso do tipo String,// posso usar compareTo. returncod.compareTo(((Cliente)d).cod);}}
// Java 5.0 ou posterior// Note que sou obrigado a usar Generics aqui...classeClienteimplementsComparable<Cliente>{Stringcod;// Como você está usando Generics e declarou direitinho// o tipo argumento aqui (Cliente), você pode declarar// corretamente aqui:publicintcompareTo(Cliented){returncod.compare(d.cod);}}
T
thingol
Você pode criar um Comparator para cada classificação desejada (o que é mais fácil) ou então ter um Comparator genérico, que recebe no seu construtor um parâmetro indicando por que campo você quer fazer a ordenação.