Ordenação de ArrayList

Pessoal bom dia

Estou lendo a apostila da caelum e não entendi muito bem sobre collections.sort para organizar um ArrayList.

alguem pode me dar um tutorial sobre ou até mesmo escrever um exemplo sobre pra mim?

Dei uma olhada sobre, entendi meio que por cima… mas nao entendi a sintaxe. Tipo a inicio eu gostaria de fazer uma ordenação por nome e outra por idade que são atributos do meu objeto. Alguem tem como me dar uma ajuda ai?

Desde de já agradeço

Primeiro passo, crie um Comparator que compare o objeto pelo campo que você deseja ordenar:
O comparator deve retornar 0 se os objetos forem iguais, algo menor que zero se o objeto 1 for menor que o 2 e algo maior que zero se o objeto 1 for maior que o objeto 2.

public class NomeComparator implements Comparator<SuaClasse> { public int compareTo(SuaClasse o1, SuaClasse o2) { return Collator.getInstance().compareTo(o1.getNome(), o2.getNome()); } }

public class IdadeComparator implements Comparator<SuaClasse> { public int compareTo(SuaClasse o1, SuaClasse o2) { return o1.getIdade() - o2.getIdade(); } }

Depois, chame o sort usando esse comparator.

Collections.sort(seuArrayList, new NomeComparator()); //Ordena por nome Collections.sort(seuArrayList, new IdadeComparator()); //Ordena por idade

Outra alternativa ao Comparator é, caso sua classe possua uma ordem default, fazer a classe implementar a interface Comparable.

mas ai no caso… eu nao entendi os Objetos como parametro… por exemplo se eu tenho esta classe aqui:

[code]import java.util.*;
public class UsaArray{
public static void main(String args[]){
ArrayList teste= new ArrayList();
String nome="";
int idade = 0;
String estado="";

while(!nome.equals("0")){
	Array array = new Array();
	System.out.println("Digite o seu nome");
	Scanner srcnome = new Scanner(System.in);
	nome = srcnome.nextLine();
	System.out.println("\n Digite a sua idade");
	Scanner srcidade = new Scanner(System.in);
	idade = srcidade.nextInt();
	System.out.println("\n Digite o seu estado");
	Scanner srcestado = new Scanner(System.in);
	estado = srcestado.nextLine();
	array.setNome(nome);
	array.setIdade(idade);
	array.setEstado(estado);
	teste.add(array);
	}
	System.out.println(teste);
}

}[code]

como eu faria… eu tenho aqui um unico objeto chamado array que adiciono o mesmo em uma lista teste. Não sei como mostrar pra ele que é um objeto array1 e array 2 por exemplo!!!

O comparator está comparadando dois possíveis objetos.
Se o seu ArrayList tem um objeto só, então ele não será usado.

O método sort pega os objetos aos pares, e vai chamando o método do seu comparator para compara-los. E daí troca eles de posição de acordo com o resultado. Se sua lista só tem um objeto, o sort não fará nada, afinal, uma lista com um objeto só já está ordenada.

rsrsrs… antes de vc postar eu entendi… agora só nao entendi uma linha

a linha do return

vc esta executando um comando que coloca a String em ordem (Collator.getInstance()) e o resto eu nao entendi… c esta pedindo um compareTo (01.getNome, 02.getNome()); nao entendi esta parte só entendi o getInstance()

cara esquece eu entendi… seria o metodo de meu obj1 e do meu obj2… joia… mas agora vai a pergunta

tipo seria uma classe separada para montar a ex: IdadeComparator certo?

Você vai fazer uma classe Comparator para cada campo que quiser ordenar.

Foi isso que você perguntou?