UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsProf. Dr. Fernando Barreto1Devair, Ricardo e WellingtonSeminárioPro...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollections• Escopo a ser tratadoDevair, Ricardo e Wellington 2
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollections• Escopo a ser tratado– Definição– Histórico de evolução– Base de p...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsDefinição• O que é?– Um objeto que agrupa um conjunto de elementos ...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsDefinição• Quais os benefícios em usar?– Reduz esforço de programaç...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsDefinição• Base matemática– Set (conjunto) – elementos sem repetiçã...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsDefiniçãoProf. Ricardo F. P. Satin, MBA, PMP 7
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollections• Escopo a ser tratado– Definição– Histórico de evolução– Base de p...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsHistórico de evolução• Collections foi inserido pela primeira vez n...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollections• Escopo a ser tratado– Definição– Histórico de evolução– Base de p...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsBase de pesquisa• Documentação oficial Oracle/Java– http://docs.ora...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollections• Escopo a ser tratado– Definição– Histórico de evolução– Base de p...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsOpções de uso• Set: Está diretamente relacionada com a ideia de con...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsOpções de uso• Set– SortedSet: Interface que estende Set, adicionan...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsOpções de uso• List: Interface que extende Collection, e que define...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsOpções de uso• List:– LinkedList: Implementação de List que utiliza...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsOpções de uso• List:– Vector: Implementação de List com o mesmo com...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsOpções de uso• Interface Map– A interface Map, auxilia no trabalho ...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsOpções de uso• Interface Map– HashMap– Esta implementação oferece t...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsOpções de uso• Interface Map– TreeMap– A TreeMap utiliza o conceito...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsOpções de uso• Classes Utilitárias– Estas classes oferecem métodos ...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsOpções de uso• Classes Utilitárias– Estas classes oferecem métodos ...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsOpções de uso• Interfaces Auxiliares– Iterator• É uma boa alternati...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsOpções de uso• Interfaces Auxiliares– ListIterator– Comparable– Com...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollections• Escopo a ser tratado– Definição– Histórico de evolução– Base de p...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsComparativo de Performance• http://scrtchpad.files.wordpress.com/20...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollections• Escopo a ser tratado– Definição– Histórico de evolução– Base de p...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsCuriosisade• API´s alternativas ao collection– Guava• Agora engloba...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsAinda com dúvidas sobre qual usar?Devair, Ricardo e Wellington29Fon...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsComplementoDevair, Ricardo e Wellington30Fonte: http://www.janeve.m...
UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRDúvidas ?• Disciplina de Programação Orientada a Objetos– Prof. Dr. Fernando B...
Próximos SlideShares
Carregando em…5
×

Seminário - Java Collections

998 visualizações

Publicada em

0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
998
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1
Ações
Compartilhamentos
0
Downloads
14
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Seminário - Java Collections

  1. 1. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsProf. Dr. Fernando Barreto1Devair, Ricardo e WellingtonSeminárioProgramação Orientada a Objetos
  2. 2. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollections• Escopo a ser tratadoDevair, Ricardo e Wellington 2
  3. 3. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollections• Escopo a ser tratado– Definição– Histórico de evolução– Base de pesquisa– Opções de uso– Comparativo de performance– CuriosidadesDevair, Ricardo e Wellington 3
  4. 4. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsDefinição• O que é?– Um objeto que agrupa um conjunto de elementos para facilitar nosso trabalho(estrutura de dados);– São usadas para armazenar, recuperar e manipular dados.– Tipicamente representam dados que possuem alguma relação em comum:• Manipular um conjunto de alunos, um conjunto de jogadores...– Em suma, é uma forma que temos de trabalhar com qualquer conjunto dedados.– Possui um conjunto de implementações (Interfaces e Classes) oferecidas pelopacote java.util;Devair, Ricardo e Wellington 4
  5. 5. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsDefinição• Quais os benefícios em usar?– Reduz esforço de programação;• Algoritmos úteis já estão implementados (ordenação, pesquisa, inclusão...)• Permite que concentremos esforços em itens importantes de nosso sistema;– Aumenta a velocidade e qualidade da programação;• As implementações já estão bem testadas garantindo qualidade e robustez;• Existem implementações mais ágeis que outras, veremos a frente;– Reduz esforços para aprender/conceber novas API´s;• A forma como estão estruturadas, seguindo a implementação padrão da interfaceCollection, permite maior facilidade de aprendizado e facilidade na criação denovas implementações.– Promove reuso de softwareDevair, Ricardo e Wellington 5
  6. 6. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsDefinição• Base matemática– Set (conjunto) – elementos sem repetição e sem ordem definida;– Multiset (conjunto multiplo) – composição de elementos com possívelrepetição e sem ordem definida;– Sequência – conjunto de elementos cuja ordem importa;• É para lidar com este tipo de problema que Collection existe!Devair, Ricardo e Wellington 6
  7. 7. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsDefiniçãoProf. Ricardo F. P. Satin, MBA, PMP 7
  8. 8. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollections• Escopo a ser tratado– Definição– Histórico de evolução– Base de pesquisa– Opções de uso– Comparativo de performance– CuriosidadesDevair, Ricardo e Wellington 8
  9. 9. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsHistórico de evolução• Collections foi inserido pela primeira vez no Java 2, em sua versão 1.2;• Java Framework Collections• Vector x Deque (Java 6)– Vector – forma descontinuado– Deque Combinação Fila e Pilha (usar um ou outro)Devair, Ricardo e Wellington 9
  10. 10. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollections• Escopo a ser tratado– Definição– Histórico de evolução– Base de pesquisa– Opções de uso– Comparativo de performance– CuriosidadesDevair, Ricardo e Wellington 10
  11. 11. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsBase de pesquisa• Documentação oficial Oracle/Java– http://docs.oracle.com/javase/7/docs/technotes/guides/collections/index.html– http://docs.oracle.com/javase/tutorial/collections/intro/index.html– http://docs.oracle.com/javase/7/docs/technotes/guides/collections/reference.html– http://docs.oracle.com/javase/7/docs/api/index.html– http://docs.oracle.com/javase/7/docs/api/java/util/Map.html– http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html– http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html• Caelum– http://www.caelum.com.br/apostila-java-orientacao-objetos/collections-framework/#16-16-desafios• JavaFree– http://javafree.uol.com.br/artigo/847654/Collections-Framework.html#ixzz2R6o7HDTV– http://www.easywayserver.com/blog/java-sortedset-example/Devair, Ricardo e Wellington 11
  12. 12. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollections• Escopo a ser tratado– Definição– Histórico de evolução– Base de pesquisa– Opções de uso– Comparativo de performance– CuriosidadesDevair, Ricardo e Wellington 12
  13. 13. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsOpções de uso• Set: Está diretamente relacionada com a ideia de conjuntos. Assim comoum conjunto, as classes que implementam esta interface não podemconter elementos repetidos.– HashSet: Implementação de Set que utiliza uma tabela hash (a implementação da Sun utiliza aclasse HashMap internamente) para guardar seus elementos. Não garante a ordem deiteração, nem que a ordem permanecerá constante com o tempo (uma modificação dacoleção pode alterar a ordenação geral dos elementos). Por utilizar o algoritmo de tabelahash, o acesso é rápido, tanto para leitura quanto para modificação.– LinkedHashSet: Implementação de Set que estende HashSet, mas adiciona previsibilidade àordem de iteração sobre os elementos, isto é, uma iteração sobre seus elementos (utilizandoo Iterator) mantém a ordem de inserção (a inserção de elementos duplicados não altera aordem anterior). Internamente, é mantida uma lista duplamente encadeada que mantém estaordem. Por ter que manter uma lista paralelamente à tabela hash, a modificação deste tipo decoleção acarreta em uma leve queda na performance em relação à HashSet, mas ainda é maisrápida que uma TreeSet, que utiliza comparações para determinar a ordem dos elementos.Devair, Ricardo e Wellington 13
  14. 14. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsOpções de uso• Set– SortedSet: Interface que estende Set, adicionando a semântica de ordenação natural doselementos. A posição dos elementos ao percorrer a coleção é determinado pelo retorno dométodo compareTo(o), caso os elementos implementem a interface Comparable, ou dométodo compare(o1, o2) de um objeto auxiliar que implemente a interface Comparator.– TreeSet: Implementação de SortedSet que utiliza internamente uma TreeMap, que por sua vezutiliza o algoritmo Red-Black para a ordenação da árvore de elementos. Isto garante aordenação ascendente da coleção, de acordo com a ordem natural dos elementos, definidapela implementação da interface Comparable ou Comparator. Use esta classe quando precisarde um conjunto (de elementos únicos) que deve estar sempre ordenado, mesmo sofrendomodificações. Para casos onde a escrita é feita de uma só vez, antes da leitura doselementos, talvez seja mais vantajoso fazer a ordenação em uma List, seguida de uma cópiapara uma LinkedHashSet (dependendo do tamanho da coleção e do número de repetições deelementos).Devair, Ricardo e Wellington 14
  15. 15. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsOpções de uso• List: Interface que extende Collection, e que define coleções ordenadas(sequências), onde se tem o controle total sobre a posição de cadaelemento, identificado por um índice numérico. Na maioria doscasos, pode ser encarado como um "array de tamanho variável"pois, como os arrays primitivos, é acessível por índices, mas além dissopossui métodos de inserção e remoção;– ArrayList: Implementação de List que utiliza internamente um array de objetos. Em umainserção onde o tamanho do array interno não é suficiente, um novo array é alocado (detamanho igual a 1.5 vezes o array original), e todo o conteúdo é copiado para o novoarray. Em uma inserção no meio da lista (índice < tamanho), o conteúdo posterior aoíndice é deslocado em uma posição. Esta implementação é a recomendada quando otamanho da lista é previsível (evitando realocações) e as operações de inserção eremoção são feitas, em sua maioria, no fim da lista (evitando deslocamentos), ouquando a lista é mais lida do que modificada (otimizado para leitura aleatória);Devair, Ricardo e Wellington 15
  16. 16. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsOpções de uso• List:– LinkedList: Implementação de List que utiliza internamente uma listaencadeada. A localização de um elemento na n-ésima posição é feitapercorrendo-se a lista da ponta mais próxima até o índice desejado. A inserçãoé feita pela adição de novos nós, entre os nós adjacentes, sendo que antes énecessária a localização desta posição. Esta implementação é recomendadaquando as modificações são feitas em sua maioria tanto no início quanto nofinal da lista, e o percorrimento é feito de forma sequencial (via Iterator) ounas extremidades, e não aleatória (por índices). Um exemplo de uso é comoum fila (FIFO - First-In-First-Out), onde os elementos são retirados da lista namesma sequência em que são adicionados;Devair, Ricardo e Wellington 16
  17. 17. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsOpções de uso• List:– Vector: Implementação de List com o mesmo comportamento daArrayList, porém, totalmente sincronizada. Por ter seus métodossincronizados, tem performance inferior ao de uma ArrayList, mas pode serutilizado em um ambiente multitarefa (acessado por várias threads) semperigo de perda da consistência de sua estrutura interna.Em sistemas reais, essa sincronização acaba adicionando um overheaddesnecessário, pois mesmo quando há acesso multitarefa à lista (o que nãoacontece na maioria das vezes), quase sempre é preciso fazer uma novasincronização nos métodos de negócio, para atomizarem operações seguidassobre o Vector.Devair, Ricardo e Wellington 17
  18. 18. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsOpções de uso• Interface Map– A interface Map, auxilia no trabalho com estruturas chave-valor.– As chaves de um map devem ser únicas.– Temos algumas implementações de uso geral• HashMap• TreeMap• LinkedHashMapDevair, Ricardo e Wellington 18
  19. 19. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsOpções de uso• Interface Map– HashMap– Esta implementação oferece todas as operações de mapa comuns. Esta classenão faz garantias quanto à ordem do mapa, em particular, não garante que aordem permanecerá constante ao longo do tempo.– HashMap não possui ordenação, então os valores ficam todos sortidos na horada iteração.– HashMap aceita como chave um valor nulo.– LinkedHashMapDevair, Ricardo e Wellington 19
  20. 20. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsOpções de uso• Interface Map– TreeMap– A TreeMap utiliza o conceito de Árvore Rubro Negra. Pode se utilizar aimplementação da interface comparable no nomento da instanciação de umTreeMap para controlar a ordenação. Esta implementação também oferece osmétodos básicos de inserção e remoção no mapa .– TreeMap ordena os registros à medida em que são inseridos, ou seja, seiterarmos esse mapa já receberemos todos os valores ordenados pela chave.– TreeMap não aceita como chave um valor nulo.Devair, Ricardo e Wellington 20
  21. 21. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsOpções de uso• Classes Utilitárias– Estas classes oferecem métodos estáticos para auxiliar o trabalho com coleções earrays(arranjos)– Arrays• Contém métodos estáticos paraclassificar, pesquisar, comparar, copiar, redimensionar, converter para String, e preencher arrays de primitivos e objetos.• Os métodos dessa classe lançam umaNullPointerException, se a referência matriz especificada fornula.• A documentação para os métodos contidos nesta classeinclui descrição das implementações. Tais descrições devemser consideradas como notas de execução, em vez de partesda especificação. Os programadores devem se sentir livrespara substituir outros algoritmos, desde que a especificaçãoem si seja respeitada.Devair, Ricardo e Wellington 21
  22. 22. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsOpções de uso• Classes Utilitárias– Estas classes oferecem métodos estáticos para auxiliar o trabalho com coleções earrays(arranjos)– Collections• Esta classe é composta exclusivamente de métodos estáticos que operam ou retornamcoleções. Ela contém algoritmos polimórficos que operam em coleções,e ou retornam umanova coleção .• Os métodos desta classe lançam uma NullPointerException se as coleções ou objetos de classeque lhes são prestados forem nulos.Devair, Ricardo e Wellington 22
  23. 23. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsOpções de uso• Interfaces Auxiliares– Iterator• É uma boa alternativa para iteração com estrutura de dados;• Define as operações básicas para o percorrimento dos elementos da coleção.• Utiliza o pattern de mesmo nome (Iterator, GoF), desacoplando o código que utiliza as coleçõesde suas estruturas internas.• É possível remover elementos da coleção original utilizando o método remove(), que remove oelemento atual da iteração, mas esta operação é de implementação opcional, e umaUnsupportedOperationException será lançada caso esta não esteja disponível.Map mapa = new HashMap();terator itChaves = mapa.keySet().iterator();while (itChaves.hasNext()) {Object chave = itChaves.next();Object valor = mapa.get(chave);System.out.println(chave + " = " + valor);}Devair, Ricardo e Wellington 23
  24. 24. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsOpções de uso• Interfaces Auxiliares– ListIterator– Comparable– Comparator– Enumeration– RandonAccesDevair, Ricardo e Wellington 24
  25. 25. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollections• Escopo a ser tratado– Definição– Histórico de evolução– Base de pesquisa– Opções de uso– Comparativo de performance– CuriosidadesDevair, Ricardo e Wellington 25
  26. 26. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsComparativo de Performance• http://scrtchpad.files.wordpress.com/2008/10/java-collections-performance-evaluation.pdf• Vector x concorrênciaDevair, Ricardo e Wellington 26
  27. 27. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollections• Escopo a ser tratado– Definição– Histórico de evolução– Base de pesquisa– Opções de uso– Comparativo de performance– CuriosidadesDevair, Ricardo e Wellington 27
  28. 28. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsCuriosisade• API´s alternativas ao collection– Guava• Agora engloba o Google Collections• http://code.google.com/p/guava-libraries/– Apache• http://commons.apache.org/proper/commons-collections/• Curiosidades / recursos– Fila, Pilha, SortDevair, Ricardo e Wellington 28
  29. 29. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsAinda com dúvidas sobre qual usar?Devair, Ricardo e Wellington29Fonte: https://fernandofranzini.files.wordpress.com/2012/06/collections.png
  30. 30. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRCollectionsComplementoDevair, Ricardo e Wellington30Fonte: http://www.janeve.me/articles/which-java-collection-to-use
  31. 31. UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁPRDúvidas ?• Disciplina de Programação Orientada a Objetos– Prof. Dr. Fernando Barreto– Mestrandos:• Devair, Ricardo, WellingtonDevair, Ricardo e Wellington 31

×