Ordenando arrays

em 20/09/2002 , por Daniel Destro
Introdução
Quando estamos manipulando estruturas de dados em aplicativos, uma das necessidade frequentemente encontradas é a de ordenar objetos de acordo com algum critério. Existem muitos métodos de implementação de algorítmos de ordenação, como o Bubble Sorte, Quick Sort e muitos outros, cada um suas peculiaridades e (des)vantagens. Java felizmente nos proporciona métodos para ordenar arrays sem que tenhamos que implementar esses algoritmos. Uma forma muito comum de fazer isso, é criar alguma coleção, como a java.util.TreeSet, e ir inserindo os elementos nela, já que ela vai se ajeitando de maneira ordenada (árvores binárias). Poucas pessoas sabem que este método é muito mais devagar do que utilizar uma classe especial do java.
java.util.Arrays
A classe java.util.Arrays possui uma série de métodos estáticos, e entre eles, provê o método sort() que ordena qualquer array passada, dado um mecanismo de comparação. Veja no exemplo, como ordenar uma array de Strings:

No exemplo acima criamos uma array de nomes desordenados e listamos na saída padrão. Logo em seguida utilizamos a ordenação do array de strings de nomes e mandamos listar novamente. Quando fizemos a ordenação (Arrays.sort), passamos como parâmetros o array de nomes a serem ordenados e como segundo parâmetro passamos a instância de uma implementação da interface Comparator. O modo como foi declarado e passado a instância da implementação de Comparator é chamado de Annonymous Inner Class. Isso é útil quando essa implementação ver usada em apenas um local, não sendo necessário reutilizar essa implementação em um outro ponto da aplicação. O seu método de comparação pode ser implementado de qualquer maneira, satisfazendo as suas necessidades. Existe ainda uma sobrecarga deste método, que você não precisa passar o segundo argumento. Mas é necessário que os objetos do seu array implementem a interface java.lang.Comparable. Então, você poderia ter usado a chamada de método simplesmente assim:

Isso porque a classe java.lang.String já implementa a Comparable. A classe java.util.Array ainda possui uma série de outros métodos para busca, preenchimento de arrays e outras funcionalidades.