Ordenaçao de list de Collection

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?

Ah, dá uma lida aqui também:
http://www.guj.com.br/posts/list/45985.java

[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() &lt; vo2.getId()) return -1; if (vo1.getId() &gt; 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() &lt; vo2.getId()) return -1; if (vo1.getId() &gt; vo2.getId()) return 1; return 0; }
[/quote]

Valeu cara, mto obrigado!!!