Caso nao tenha ideia do que aconteceru bastaler meu post sobre sobrescrevendoo modo toString() paraentender melhor. Caso adicione conformeabaixo nossa classe Surfista: publicString toString() { return"Surfista[nome="+ nome+ ", apelido="+ apelido+", idade="+ idade+ "]"; }Resultadoda saida sera:[Surfista[nome=Gabriel Medina , apelido=Medina, idade=19], Surfista[nome=Miguel Pupo , apelido=Dropador, idade=21], Surfista[nome=Adriano Souza , apelido=Rasgador, idade=26], Surfista[nome=Raone Monteiro , apelido=Monteiro, idade=30], Surfista[nome=Alejo Muniz , apelido=novato, idade=23], Surfista [nome=FelipeToledo , apelido=cacula, idade=18]][Surfista[nome=Adriano Souza , apelido=Rasgador, idade=26], Surfista[nome=Alejo Muniz , apelido=novato, idade=23], Surfista [nome=FelipeToledo , apelido=cacula, idade=18], Surfista [nome=Gabriel Medina ,apelido=Medina, idade=19], Surfista [nome=Miguel Pupo ,apelido=Dropador, idade=21], Surfista [nome=Raone Monteiro ,apelido=Monteiro, idade=30]]Pronto,temos nossa lista ordenada por nome :-) InterfaceComparator Assimcomo Comparable, esta interface possui um metodo a serimplementado quando a interface for definida junto a definicao daclasse. Se desejar e possivel inclusive Implementar as duasinterfaces na mesma classe e utilizar implementacoes diferentesafim de oferecer duas formas de classificacao diferente. Seu metodoa ser implementado no entanto e o compare(), muito semelhanteao outro nao e mesmo? Acredito que muitos acabam se confundindo.. Umavez que ja implementamos a classificacao por nome da nossa lista,iremos implementar uma classificacao por apelido para que fique umpouco diferente do anterior, quanto ao comportamento do metodocompare() e exatamente igual ao da interfaces Comparableonde o retorno em caso deigualdade entre os elementos ezero, quando o primeiro elemento for maior queo segundo o retorno e uminteiro positivo e quando o segundoelemento for maior que o primeiro,seu retorno e negativo.Vamosfalar um pouquinho de codigo? Aimplementacao da interface Comparator ficaria da seguinte forma nanossa classe Surfista:publicclassSurfista implementsComparator<Surfista>{ Stringnome; Stringapelido; intidade; intid; @Override publicintcompare(Surfista o1,Surfista o2){ returno1.getApelido().compareTo(o2.getApelido()); }//getterse setters toStringequals : abaixoQuantoa nossa classe que realiza a chamada ao metodo compare( )faria o seguinte procedimento: List<Surfista>surfistas= newArrayList<Surfista>(); surfistas= Surfista.mockSurfistas();//carregalistasdesurfistas System.out.println(surfistas);//listassemclassificacao Surfistas3= newSurfista(); Collections.sort(surfistas,s3);//classificaca System.out.println(surfistas);//listascomclassificacaoSaida:[Surfista[nome=Gabriel Medina , apelido=Medina, idade=19], Surfista[nome=Miguel Pupo , apelido=Dropador, idade=21], Surfista[nome=Adriano Souza , apelido=Rasgador, idade=26], Surfista[nome=Raone Monteiro , apelido=Monteiro, idade=30], Surfista[nome=Alejo Muniz , apelido=novato, idade=23], Surfista [nome=FelipeToledo , apelido=cacula, idade=18]][Surfista[nome=Miguel Pupo , apelido=Dropador, idade=21], Surfista[nome=Gabriel Medina , apelido=Medina, idade=19], Surfista[nome=Raone Monteiro , apelido=Monteiro, idade=30], Surfista[nome=Adriano Souza , apelido=Rasgador, idade=26], Surfista[nome=Felipe Toledo , apelido=cacula, idade=18], Surfista [nome=AlejoMuniz , apelido=novato, idade=23]]Observacoesem uma Classificacao Finalizaremosaqui a parte de classificacao fazendo algumas observacoes quepodem ser basicas mas muitas vezes nao prestamos atencao entaosempre vale a atencao: Classificar um array de objetos funciona da mesma forma que classificar conjunto de objetos. O metodo Arrays.sort() e sobrescrito da mesma forma que o metodo Collections.sort(). Os metodos Arrays.sort() que classificam tipos primitivos sempre o fazem com base na ordem natural. Os metodos sort() de Arrays e Collection sao estaticos, nao e necessario que instancie os mesmos para a utilizacao do metodo. Ambos os metodos sort() de Arrays e Collections alteram o objeto e suas referencias, classificando-as ao contrario que muitos podem pensar que elas retornam uma lista ja classificada. So e possivel classificar objetos que sao mutualmente classificaveis. Nao temos como classificar por exemplo uma lista de objetos onde se encontra objetos do tipo Surfista com outro objeto como Campeonato que nao possa classifica-lo mutuamente.Buscasem Conjuntos e Arrays Tantoa classe Arrays quanto a classe Collections possuem o metodo debusca binarySearch() para que possamos encontrar um elementoem nossa