Galera,
queria saber se alguém pode me ajudar…
Fiz um método aqui para comprar um List de Collection e estou tendo um erro na hora que dou Collections.sort ( minha lista)
Dei uma olhada e parece que tenho que implementar o método Comparable…
Alguém pode me exmplicar como ficaria esse Comparable?
Meu método:
[code]
/**
* Método responsável por ordenar uma lista em ordem alfabética
* @param listaParaOrdenacao Lista que deseja-se fazer a ordenação
* @return listaOrdenada
*/
public List<String> ordenarElementos(Collection<String> listaParaOrdenacao) {
List<String> listaOrdenada = new ArrayList<String>(listaParaOrdenacao); //Faz a cópia
try{
Collections.sort(listaOrdenada); // Aqui tenho erro
}
catch(Exception e){
e.printStackTrace();
}
return listaOrdenada;
}
[/code]
erro:
cannot be cast to java.lang.Comparable
É com String mesmo que você está trabalhando?
A mensagem de erro também está parecendo estar pela metade… Ele não diz que classe não pode ser cast para Comparable?
[quote=ViniGodoy]Ah, dá uma lida aqui também:
http://www.guj.com.br/posts/list/45985.java[/quote]
na verdade tenho que implementar o método Compare
@Override
public int compare(VOGenerico o1, VOGenerico o2) {
return 0;
}
o que eu faço nesse metodo??
vlweww
Você diz ao Java como um VOGenerico pode ser comparado com outro VOGenerico.
Para ordenar, é necessário ser capaz de dizer se um objeto é menor, maior ou igual a outro. Retorne um valor < 0 no primeiro caso, > 0 no segundo ou 0, no teceiro.
Por exemplo, esse aqui ordenaria pelo toString():
public void compare(VOGenerico vo1, VOGenerico vo2) {
return vo1.toString().compareTo(vo2);
}
Esse aqui por id:
public void compare(VOGenerico vo1, VOGenerico vo2) {
if (vo1.getId() < vo2.getId())
return -1;
if (vo1.getId() > vo2.getId())
return 1;
return 0;
}
Considere a possibilidade de usar um Comparator ao invés de implementar a interface Comparable. A menos que exista uma comparação “natural” para sua classe.
Já resolvi…
nossa mto simples!
@Override
public int compare(VOGenerico o1, VOGenerico o2) {
return o1.toString().compareTo(o2.toString());
}
[quote=ViniGodoy]Você diz ao Java como um VOGenerico pode ser comparado com outro VOGenerico.
Para ordenar, é necessário ser capaz de dizer se um objeto é menor, maior ou igual a outro. Retorne algo < 0 no primeiro caso, > 0 no segundo ou 0, no teceiro.
Por exemplo, esse aqui ordenaria pelo toString():
public void Compare(VOGenerico vo1, VOGenerico vo2) {
return vo1.toString().compareTo(vo2);
}
Esse aqui por id:
public void Compare(VOGenerico vo1, VOGenerico vo2) {
if (vo1.getId() < vo2.getId())
return -1;
if (vo1.getId() > vo2.getId())
return 1;
return 0;
}
[/quote]
Valeu cara, mto obrigado!!!