Ordenar list por vários campos

Oi pessoal,

Tem como eu ordenar um List por mais de um campo? Dos exemplos que vi o pessoal ordena somente por um campo.
Se alguém souber e puder postar um exemplo ficarei agradecido.

Valeu.

Kra, não sei se entendi direito, mas são campos existentes em banco de dados?
Seria um select! alguma coisa do tipo?
Caso seja isso, acredito que não de pra orndenar por mais campos.
Isso justifica vc ter visto apenas exemplos ordenados por um campo.

flw

http://www.java2s.com/Tutorial/Java/0140__Collections/SortingaCollectioncontaininguserdefinedObjects.htm

[quote=Edifran]Kra, não sei se entendi direito, mas são campos existentes em banco de dados?
Seria um select! alguma coisa do tipo?
Caso seja isso, acredito que não de pra orndenar por mais campos.
Isso justifica vc ter visto apenas exemplos ordenados por um campo.
flw[/quote]

Não é select no banco, é list do java.

Entrei no link, mas no exemplo mosta ordenando somente por um campo.

Eu quero algo do tipo:
Imagem um List onde Pessoa tem os campos (nome, dataNascimento, sexo).
Quero que o usuário escolha como ele quer ordenar o list, por exemplo: 1º sexo, 2º dataNascimento, 3º nome.

analise novamente o link q te passei :lol: :

public int compareTo(Person person) { int result = surname.compareTo(person.surname); return result == 0 ? firstName.compareTo(((Person) person).firstName) : result; }

segundo a api o método compareTo da classe String:

então no código acima se e apenas se o surname for igual ai ele avalia o firstname, caso contrário nem precisa.

Hummmm… blz, vou verificar :slight_smile:

[quote=maurenginaldo]Oi pessoal,

Tem como eu ordenar um List por mais de um campo? Dos exemplos que vi o pessoal ordena somente por um campo.
Se alguém souber e puder postar um exemplo ficarei agradecido.
[/quote]

Use Collections.sort e Comparator.

Vc tem que escolher a ordem do campos. Ou seja, se vc quer ordenar por X, Y , Z ou por X, Z , Y. Não é equivalente.
O comparator faz comparações sucessivas dos campos até determinar se os elementos são menor, igual ou maior.