Se você estava a procura de uma forma rápida de ordenar listas, embaralhá-las, entre outras coisas, esta é a classe.
Ela pode manipular várias Interfaces do java, como:
- Set
- List
- Map
- SortedSet
- entre outras.
A classe Collections oferece vários métodos que são de bastante utilidade. Confira:
- sort(List) - ordena uma lista usando o algoritmo merge sort, o qual provê uma performance média comparado com o algoritmo quicksort, mas garantindo performance de [n*log n] (diferente do quicksort), e estabilidade (diferente do quicksort).
obs.: Você deve implementar a Inteface Comparable. Mas como eu faço isso? Simples. Veja ai!
Vamos supor que você tenha uma classe Produto com essa cara:
public class Produto {
private Integer id;
private String descricao;
private Double preco;
private Long codigoBarra;
// getters and setters ...
}
Para que o Collections.sort(List) ordene o Produto pela descricao, por exemplo, primeiro implemete a Interface Comparable.
E implemente o método compareTo(Object).
public class Produto implements Comparable {
// continua o mesmo acima ...
@Override
public int compareTo(String value) {
return this.descricao.compareTo(value);
}
}
Bom, o próximo passo é chamar o método:
public class ProdutoDao {
// atributos e construtor ...
public List findAll() {
List list = new ArrayList();
// conexão com o banco e a query ...
while (rs.next()) {
// Pegue os dados do ResultSet e adicione na lista
list.add(produto);
}
Collections.sort(list);
return list;
}
}
reverse(List) - Reverte a ordem dos elementos na lista.
Vamos supor a seguinte situação: Você quer os elementos de uma lista ordenados de forma decrescente. Bem, agora
que você já aprendeu a ordenar de forma crescente, basta chamar o sort(List) e depois o reverse(List).
public List findAll() {
List list = new ArrayList();
// conexão com o banco e a query ...
while (rs.next()) {
Produto produto = new Produto();
// Pegue os dados do ResultSet e adicione na lista
list.add(produto);
}
Collections.sort(list);
Collections.reverse(list);
return list;
}
swap(List, int, int) - Troca elementos da List a partir do índice.
Útil quando necessário algum tipo de prioridade de certo elemento, basta achá-lo e trocar de lugar com outro
usando o método swap.
// ...
Collections.swap(list, 3, 1);
// ...
No caso o elemento 3 da list foi para a primeira posição e o 1 foi para a terceira posição.
shuffle(List) - permuta randomicamente uma lista usando um código randômico padrão.
É ideal quando você precisa embaralhar, por exemplo, uma lista de cartas de uma baralho.
// ...
Collections.shuffle(list);
// ...
Para mais informações sobre Java Collections Framework visite: http://java.sun.com/j2se/1.4.2/docs/api/java/util/Collections.html