Curso java 08 - mais sobre coleções

1,279 views
1,184 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,279
On SlideShare
0
From Embeds
0
Number of Embeds
13
Actions
Shares
0
Downloads
42
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Curso java 08 - mais sobre coleções

  1. 1. Mais sobre coleçõesAndré Assad – Maurício Linhares
  2. 2. O que são Coleções}  São estruturas de dados }  Vetores (listas) }  Conjuntos }  Pilhas }  Árvores binárias }  Tabelas de hash}  Oferecem formas diferentes de colecionar dados com base em fatores como }  Eficiência no acesso ou na busca ou na inserção }  Forma de organização dos dados }  Forma de acesso, busca, inserção
  3. 3. O que fazer com uma Coleção}  As seguintes operações são básicas para todas as coleções: }  Adicionar objetos }  Remover objetos }  Descobrir se um objeto ou um grupo de objetos faz parte de uma coleção }  Recuperar um objeto em uma coleção }  Iterar cada elemento de uma coleção a procura de um objeto
  4. 4. Java Collections API}  Oferece uma biblioteca de classes e interfaces (no pacote java.util) que }  Implementa as principais estruturas de dados de forma reutilizável }  Oferece implementações de cursor para iteração (Iterator pattern) para extrair dados de qualquer estrutura usando uma unica interface }  Oferece implementações de métodos estáticos utilitários para manipulação de coleções e vetores
  5. 5. Interfaces e Implementações deCollection
  6. 6. Interfaces e Implementações de Map, Sete List
  7. 7. Map, Collection e Collections}  Apesar de ser conhecida como uma Collection, Map não estende Collection }  Map não é uma Collection}  Interface java.util.Collection }  É a interface estendida por Set e List}  Classe java.util.Collections }  Possui vários métodos utilitários e estáticos para serem usados com classes}  Referencias }  http://java.sun.com/j2se/1.4.2/docs/guide/collections/ }  http://java.sun.com/j2se/1.4.2/docs/api/java/util/Collections.html }  http://java.sun.com/j2se/1.4.2/docs/api/java/util/Collection.html
  8. 8. Exemplos●  Conjunto (interface Set) -  Não pode ter duplicatas -  Os elementos não estão ordenados nem classificados}  Lista (interface List) }  Pode ter duplicatas }  Os elementos estão sempre ordenados
  9. 9. Exemplos}  Tabelas (interface Map) }  Os elementos possuem um identificador único
  10. 10. Coleções Ordenadas e Classificadas}  As coleções podem ser: }  Não-classificadas (unsorted) e não-ordenadas (unordered) }  Ordenadas, mas não-classificadas }  Ambas ordenadas e classificadas}  As coleções nunca serão: }  Classificadas e não ordenadas }  Classificar (sorting) é um tipo específico de ordenamento (ordering)
  11. 11. Ordenamento}  Quando uma coleção é ordenada, podemos iterar pelos elementos da coleção de forma ordenada NÃO-aleatória }  Exemplo }  Uma Hashtable não é ordenada, ele possui um algoritmo interno que determina a ordem de inserção }  Um LinkedHashSet a ordem dos elementos é definida pela ordem de inserção. Os elementos não podem ser inseridos num índice pre-definido }  Um ArrayList mantém a ordem definida pelo índice do elemento (como nos arrays). Elementos podem ser inseridos num índice definido pelo desenvolvedor
  12. 12. Classificação}  Coleções classificadas são ordenadas pelo tipo de elemento que elas possuem }  Strings são classificados por ordem alfabetica }  Inteiros por ordem numerica }  Outros objetos dependem de implementação }  Se o desenvolvedor desejar implementar a sua ordem ele deve implementar a classe Comparable
  13. 13. Exemploimport java.util.*;public class Ordenado { public static void main (String[] args) { LinkedHashSet lhs = new LinkedHashSet(); lhs.add("Cuiaba"); lhs.add("Amazonas"); lhs.add("Joao Pessoa"); lhs.add("São Paulo"); lhs.add("Rio de Janeiro"); printCollection(lhs); }}import java.util.*;public class Classificado { public static void main (String[] args) { TreeSet ts = new TreeSet(); ts.add("Cuiaba"); ts.add("Amazonas"); ts.add("Joao Pessoa"); ts.add("São Paulo"); ts.add("Rio de Janeiro"); printCollection(ts); }}
  14. 14. Classificação em Java}  Os objetos são ordenáveis pelo seu conteúdo quando eles implementam a interface java.util.Comparable;}  A interface comparable define um único método, o método “compareTo()” que recebe um único parâmetro e retorna um inteiro: }  Ele deve retornar -1 quando o objeto passado como parâmetro for maior que o objeto atual; }  0 se ambos os objetos são equivalentes; }  E 1 se o objeto passado como parâmetro for menor que o objeto atual;
  15. 15. List}  As listas possuem controle o índice, a unica diferença da lista para as outras coleções são os métodos de controle de indice }  get(int index), indexOf(), add(int index, Object obj), etc}  Implementações de List }  ArrayList }  Considerado um array que pode crescer além da sua capacidade inicial }  Vector }  Possui o mesmo comportamento do ArrayList, mas os seus métodos são todos synchronized para acesso multi-thread }  LinkedList }  Os elementos são duplamente ligados uns aos outros }  Isso permite adição ou remoção no inicio ou fim da lista
  16. 16. Set}  Os conjuntos não permitem duplicatas. Isto é verificado pelo equals de cada elemento}  Implementações de Set }  HashSet }  É um conjunto não-classificado e não-ordenado. Utiliza o hashCode() de cada objeto }  LinkedHashSet }  É uma versão ordenada do HashSet }  TreeSet }  É uma versão classificada do HashSet
  17. 17. Map}  Map oferece identificadores únicos (chaves) para cada elemento}  Implementações de Map }  HashMap }  Oferece uma estrutura não-classificada e não-ordenada }  Hashtable }  Possui o mesmo comportamento do HashMap, mas os seus métodos são todos synchronized para acesso multi-thread }  LinkedHashMap }  Mantém a ordem de inserção dos elementos }  TreeMap }  Estrutura classificada de Map }  Pode-se passar um Comparator em seu construtor para se classificar os elementos
  18. 18. Percorrendo uma Coleção}  Para se percorrer uma coleção usamos o IteratorHashMap map = new HashMap();map.put("um", new Coisa("um"));map.put("dois", new Coisa("dois"));map.put("tres", new Coisa("tres"));(...)Iterator it = map.values().iterator();while(it.hasNext()) {Coisa c = (Coisa)it.next();System.out.println(c);}
  19. 19. O que é um iterator?}  É um padrão de projeto que define a criação de um objeto que sabe navegar em uma coleção, de forma que a implementação da coleção fique transparente para quem a usar;}  Os iterators em Java são implementações da interface java.util.Iterator;}  Todas as classes que implementam a interface Collection tem um método que retorna um Iterator para elas;
  20. 20. Exemplo de List}  List possui um ListIterator, que pode acessar o inicio, priximo, ou o fim da listaList lista = new ArrayList();lista.add(new Coisa("um"));lista.add(new Coisa("dois"));lista.add(new Coisa("tres"));(...)Coisa c3 = lista.get(2); // == índice de vetorListIterator it = lista.listIterator();Coisa c = it.last();Coisa d = it.previous();Coisa[] coisas =(Coisa[])list.toArray(new Coisa[lista.size()]);
  21. 21. Set Exemplo}  Os conjuntos não permitem duplicatas }  O trecho de código abaixo imprime: um, dois, tres Set conjunto = new HashSet(); conjunto.add("um"); conjunto.add("dois"); conjunto.add("tres"); conjunto.add("um"); conjunto.add("um"); Iterator it = conjunto.iterator(); while(it.hasNext()) { System.out.println(it.next()); }
  22. 22. Map Exemplo}  Maps possuem chaves e valoresMap map = new HashMap();map.put("um", new Coisa("um"));map.put("dois", new Coisa("dois"));(...)Set chaves = map.keySet();Collection valores = map.values();(...)Coisa c = (Coisa) map.get("dois");(...)Set pares = map.entrySet();Iterator entries = pares.iterator();Map.Entry one = entries.next();String chaveOne = (String)one.getKey();Coisa valueOne = (Coisa)one.getValue();
  23. 23. Which collection class allows you to grow or shrink its size and provides indexed access to itselements, but whose methods are not synchronized?A. java.util.HashSetB. java.util.LinkedHashSetC. java.util.ListD. java.util.ArrayListE. java.util.Vector
  24. 24. Given the following,12. TreeSet map = new TreeSet();13. map.add("one");14. map.add("two");15. map.add("three");16. map.add("four");17. map.add("one");18. Iterator it = map.iterator();19. while (it.hasNext() ) {20. System.out.print( it.next() + " " );21. }what is the result?A. one two three fourB. four three two oneC. four one three twoD. one two three four oneE. one four three two oneF. The print order is not guaranteed.
  25. 25. Which collection class allows you to associate its elements with key values, and allows you toretrieve objects in FIFO (first-in, first-out) sequence?A. java.util.ArrayListB. java.util.LinkedHashMapC. java.util.HashMapD. java.util.TreeMapE. java.util.LinkedHashSetF. java.util.TreeSet

×