Anúncio
Anúncio

Mais conteúdo relacionado

Anúncio

Mais de Maurício Linhares(20)

Último(20)

Anúncio

Curso java 08 - mais sobre coleções

  1. Mais sobre coleções André Assad – Maurício Linhares
  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. 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. 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. Interfaces e Implementações de Collection
  6. Interfaces e Implementações de Map, Set e List
  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. 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. Exemplos }  Tabelas (interface Map) }  Os elementos possuem um identificador único
  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. 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. 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. Exemplo import 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. 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. 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. 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. 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. Percorrendo uma Coleção }  Para se percorrer uma coleção usamos o Iterator HashMap 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. 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. Exemplo de List }  List possui um ListIterator, que pode acessar o inicio, priximo, ou o fim da lista List 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 vetor ListIterator it = lista.listIterator(); Coisa c = it.last(); Coisa d = it.previous(); Coisa[] coisas = (Coisa[])list.toArray(new Coisa[lista.size()]);
  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. Map Exemplo }  Maps possuem chaves e valores Map 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. Which collection class allows you to grow or shrink its size and provides indexed access to its elements, but whose methods are not synchronized? A. java.util.HashSet B. java.util.LinkedHashSet C. java.util.List D. java.util.ArrayList E. java.util.Vector
  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 four B. four three two one C. four one three two D. one two three four one E. one four three two one F. The print order is not guaranteed.
  25. Which collection class allows you to associate its elements with key values, and allows you to retrieve objects in FIFO (first-in, first-out) sequence? A. java.util.ArrayList B. java.util.LinkedHashMap C. java.util.HashMap D. java.util.TreeMap E. java.util.LinkedHashSet F. java.util.TreeSet
Anúncio