Quandocodificamos em OO, vemos a necessidade durante o desenvolvimento denossas aplicacoes, trabalharmos com lista de objetos. Ate ai naoe surpresa pra ninguem... Um campeonato de surf exige ter uma listade surfistas incritos assim como qualquer campeonato. Uma turma deuma escola em uma sala de aula ira sempre ter uma lista de alunos,professores, livros, cadernos... Natecnologia Java, temos varios tipos de listas diferentes cada umacom uma finalidade e entenderemos o motivo durante os proximoscapitulos desta novela que comeca agora... Antesde tudo vemos que e necessario realizar acoes comuns em uma listatais como:Adicionar itensRemover itensSaber se a lista possui tal itemIterar sobre a listaObter um item da lista Umavez que temos variadas listas com suas particularidades, e sempreutil sabermos qual os beneficios que uma lista podera trazer equal a nossa necessidade afim de trazer para a nossa aplcacao ummelhor desempenho para encontrar um item em nossa lista e obtermosuma informacao que desejamos. Porconta disto iremos comecar explicando quais sao estas listas eexplicarei cada uma delas.NossaAPI de conjuntos comeca com um grupo de sete interfaces sao elas:CollectionListMapQueueSetSortedSetSortedMapAsinterfaces acima possuem suas respectivas classes concretas que asimplementam sao elas:HahSetLinked HashSetTreeSEtArrayListVectoLinkedListPriority QueueHashTableLikedHashMapHashMapTreeMapParamelhor entender, veremos nos quadros abaixo estas classes concretascom suasseguintes interfaces: Collection<interface> Set<interface> List<interface> Queue<interface> HashSet Linked HashSet Sorted Set<interface> ArrayList Vector LinkedList Priority Queue Tree Set Map <Interface> HashTable LinkedHashMap HashMap SortedMap<Interface> TreeMap Object Array Collections Valeressaltar para nao confundirmos a diferenca entre Collection comCollections, em quanto aprimeira e uma interface ao importar java.util.Collection e quepossui outras interaces que a exendem tais como Set, List e Queue. Asegunda citada que se encontra no plural e da bibliotecajava.util.Collectionsque possui varios metodos acessiveis como utilitarios afim defacilitar nosso manuseio com qualque conjunto(lista)que nada mais e que qualquerestrutura que armazena varios itens. Emgeral, os conjuntos que possuimos poderao ser classificados em 3formas diferentes sao eles:Nao-Classificada e Nao-OrdenadaOrdenada e Nao-ClassificadaOrdenada e ClassificadaObs.:Nao encontramos a classificacao e nao ordenacao por motivosobvios, uma classificacao ja seria um tipo de ordenacao :) Mesmoassim para melhor prosseguirmos a leitura, irei definir o aqui os queseria uma ordenacao e uma classificacao para dar prosseguimentoas caracteristicas de cada tipos de lista de acordo com suasinterfaces.Ordenacao:Dizemos que um conjnto possui uma ordenacao quando possuem umaordem ao serem armazenadosno conjunto. Mesmoassim ao iteramos peloconjunto (percorrermos cada item de um conjunto por meio de loops),poderemos ter saidas diferentes mesmo que nao tenha realizadoalguma alteracaono mesmo.Sua ordem e definida pelo metodo hashCodeque descrevemos no post anterior. Algunsconjuntos mantem sua ordem e sua classificacao que e consideradocomo natural doselementos,definidaapartir do momento em que oselementos saoinseridos no conjunto ja outros casos podemos ver conjuntos quehabilitamao programador a inserirum elemento emuma posicao especifica do indice.Classificacao:Quandoum conjunto possui a caracteristia de ser classificado, e porqueele aplica regras no momento que um elemento e inserido em seucontexto. Isso faz obtermos uma listagem dos seus elementos igualsempre que realizarmos iteracoes. Uma classificacao podera seralfabetica(A-Z) ou numerica(1-10...) quando utilizamos elementostexto ou inteiros, mas em caso de armazenarmos na nossa lista umelemento que e uma classe que criamos, nao ha como saber ao menosque utilize umada(s)interface(s)Comparableou Comparator quedefine como as instancias de uma classe poderao ser comparadasentre si.