A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Capítulo 4. Conjuntos  Introdução  Principais operações de conjuntos  Principais interfaces de conjuntos  A interface Collection  A interface Iterator.

Apresentações semelhantes


Apresentação em tema: "Capítulo 4. Conjuntos  Introdução  Principais operações de conjuntos  Principais interfaces de conjuntos  A interface Collection  A interface Iterator."— Transcrição da apresentação:

1 Capítulo 4

2 Conjuntos  Introdução  Principais operações de conjuntos  Principais interfaces de conjuntos  A interface Collection  A interface Iterator  A interface List  A classe ArrayList  A classe LinkedList  A interface Set  A classe HashSet  A interface Map  A classe HashMap  A classe Hashtable 2

3 Introdução  Os arrays são estruturas de dados simples para armazenamento de conjuntos de informações  São bem eficientes, porém possuem limitações: Arrays possuem tamanho fixo. Não podem ser aumentados nem diminuídos. Arrays não possuem nenhum mecanismo que evitam duplicidade. 3

4 Principais operações de conjuntos  O Java possui diversas estruturas de dados, cada qual com sua particularidade que permitem: Adicionar novos itens Remover itens existentes Limpar todos os item Dentre outras ações 4

5 Principais interfaces de conjuntos Collection add(T) : boolean remove(T) : boolean size() : int clear() : void iterator() : Iterator Set List get(int) : T set(int, T) : T add(int, T) : void remove(int) : T Map put(K, V) : V get(K) : V remove(K) : V clear() : void size() : int keySet() : Set 5

6 Collection  Representa uma porção (coleção) de objetos.  Podemos adicionar ou excluir objetos de uma collection. Seu tamanho é ajustado dinamicamente.  Através do uso de generics, podemos restringir o tipo dos objetos que serão adicionados à sua collection. 6

7 Collection – Principais métodos  add(T) Adiciona o elemento T à coleção  remove(T) Remove o elemento T da coleção  size() Retorna o número de itens contidos na coleção  clear() Remove todos os elementos da coleção, tornando-a vazia  iterator() Retorna um objeto “varredor” que nos permite navegar pelos elementos contidos pela coleção 7

8 Collection Collection colecaox = new HashSet (); Produto p1 = new Produto(1012, “Cerveja em lata”); colecaox.add(p1); Produto p2 = new Produto(1050, “Biscoito recheado”); colecaox.add(p2); colecaox.add(new Produto(2034, “Sabão em pó”)); System.out.println(“Quantidade: ” + colecaox.size() + “ itens”); 8 Alguma implementação de Collection

9 Collection Collection colecaoy = new ArrayList (); colecaoy.add(“Item 1”); colecaoy.add(56); colecaoy.add(false); colecaoy.add(new Date()); colecaoy.add(new Produto(2034, “Sabão em pó”)); colecaoy.add(new Cliente(“Manuel”, “Rua 15”, “4532-7125”)); System.out.println(“Quantidade: ” + colecaoy.size() + “ itens”); 9 Alguma implementação de Collection

10 Collection  Percorrendo uma coleção com a interface Iterator Iterator it = colecaox.iterator(); Produto p1 = it.next(); Produto p2 = it.next(); Produto p3 = it.next(); Produto p4 = it.next(); Produto p5 = it.next();... 10 Alguma Collection previamente preenchida

11 Collection  Percorrendo uma coleção genérica com a interface Iterator Iterator it = colecaoy.iterator(); String item1 = (String) it.next(); Integer item2 = (Integer) it.next(); Boolean item3 = (Boolean) it.next(); Produto item4 = (Produto) it.next(); Cliente item5 = (Cliente) it.next();... 11 Alguma Collection previamente preenchida

12 Collection  Percorrendo uma coleção com a interface Iterator Iterator it = colecao.iterator(); while (it.hasNext()) { Funcionario func = it.next(); System.out.println(“Funcionario: ” + func.getNome()); } 12 Alguma Collection previamente preenchida

13 Collection  Percorrendo uma coleção com for-each for (Funcionario func : colecao) { System.out.println(“Funcionario: ” + func.getNome()); } 13 Alguma Collection previamente preenchida

14 List  Subtipo de Collection que representa uma coleção indexada de objetos.  Em um List, os objetos são armazenados de forma sequencial, um após o outro.  Cada objeto da lista recebe um índice numérico conforme sua posição. 14

15 List 15 01234

16 List – Principais métodos O List possui todos os métodos contidos em Collection, e mais...  get(int) Obtem da lista o item da posição especificada  set(int, T) Substitui o item da posição especificada pelo elemento T  add(int, T) Adiciona (insere) o item T na posição especificada  remove(int) Remove o item da posição especificada 16

17 List List lista = new ArrayList (); lista.add(new Cliente(“João”, “Gold”, “6781-9874”)); lista.add(new Cliente(“Manuel”, “Bronze”, “4532-7125”)); lista.add(new Cliente(“Joaquim”, “Silver”, “7945-0257”)); lista.add(1, new Cliente(“Maria”, “Gold”, “7801-2068”)); Cliente c = lista.get(1); System.out.println(“Cliente 1: ” + c.getNome()); lista.remove(2); System.out.println(“Total de clientes: ” + lista.size()); 17 Alguma implementação de List

18 List – Principais implementações  LinkedList Armazena cada um de seus elementos em um espaço de memória que sempre possui uma referência para o próximo item. Mais rápido para inserção/exclusão (insert/remove) Mais lento para obter seus valores (get)  ArrayList Armazena seus elemento em um array interno, reformulando-o a cada inserção ou remoção. Mais rápido para obter seus valores (get) Mais lento para inserção/exclusão (insert/remove)  Vector Antiga implementação da interface List que garante a integridade de seus dados quando acessado por processos concorrentes (threads) 18

19 Set  Subtipo de Collection que representa uma coleção não-indexada de objetos.  Alguns tipos de Set não armazenam seus objetos de forma sequencial. Assim sendo, não podemos garantir que os objetos serão coletados na mesma ordem em que foram adicionados.  Uma coleção do tipo Set não permite a existência de elementos duplicados. 19

20 Set 20

21 Set Set conjunto = new HashSet (); conjunto.add(new Funcionario(203, “Maria”)); conjunto.add(new Funcionario(112, “Manuel”)); conjunto.add(new Funcionario(205, “Joaquim”)); conjunto.add(new Funcionario(185, “Maria”)); System.out.println(“Quantidade de funcionarios: ” + conjunto.size()); 21 Alguma implementação de Set

22 Set – Principais implementações  HashSet Armazena cada um de seus elementos em um espaço de memória sempre utilizando os métodos equals() e hashCode() do objeto inserido para comparação com cada um dos objetos já existentes no set. Trata-se de uma das coleções mais eficientes de todo o framework Java.  LinkedHashSet Implementação da interface Set que armazena seus elementos na mesma ordem em que foram inseridos. 22

23 Map  Conjunto de dados indexados semelhante a uma lista (List). Assim como os outros conjuntos visto neste capítulo, o map possui tamanho dinâmico. Pode ser aumentado e diminuído Porém... Também possui índices (chaves), mas estes podem ser Strings ou quaisquer outros objetos. 23

24 Map 24 ChaveValor

25 Map 25 “conta”new Conta(2809, 1200.15) “casado” “nascimento” “salario” “idade” true 15/01/1985 1215.5 27 “nome”“Manuel” Map

26 26 “1874309-5” “3945651-1” “76836-7” new Cliente(“1874309-5”, “Maria”, “Alameda XV”) new Cliente(“3945651-1”, “Joaquim”, “Rua 35”) new Cliente(“76836-7”, “Ricardo”, “Av. Central, 23”) “897822-9”new Cliente(“897822-9”, “Manuel”, “Rua 5”) Map

27 Map – Principais métodos  put(K, V) Adiciona ao map um elemento de chave K e conteúdo V  get(K) Obtém o conteúdo do elemento que possui a chave K  remove(K) Remove do map o elemento que possui chave K  clear() Remove todos os elementos do map, tornando-o vazio  size() Retorna o número de itens contidos no map  keySet() Retorna um Set contendo todas as chaves do map. Tipicamente utilizado para varrer os elementos do map. 27

28 Map  Inserindo elementos em um map Map mapa = new HashMap (); mapa.put(“nome”, “Manuel”); mapa.put(“idade”, 27); mapa.put(“salario”, 1215.5); mapa.put(“nascimento”, new GregorianCalendar(1985, 0, 15)); mapa.put(“casado”, true); mapa.put(“conta”, new Conta(2809, 1200.15)); System.out.println(“Quantidade de itens: ” + mapa.size()); 28 Alguma implementação de Map

29 Map  Obtendo elementos de um map String nome = (String) mapa.get(“nome”); Integer idade = (Idade) mapa.get(“idade”); Double salario = (Double) mapa.get(“salario”); Calendar dataNasc = (Calendar) mapa.get(“nascimento”); Boolean casado = (Boolean) mapa.get(“casado”); Conta conta = (Conta) mapa.get(“conta”); mapa.remove(“salario”); mapa.remove(“casado”); System.out.println(“Quantidade de itens: ” + mapa.size()); 29

30 Map  Varrendo os elementos de um map Set chaves = mapa.keySet(); for (String chave : chaves) { System.out.println(“Chave: ” + chave); System.out.println(“Valor: ” + mapa.get(chave)); } 30 Algum Map previamente preenchido

31 Map – Principais implementações  HashMap Uma simples implementação da interface Map Criada a partir da versão 1.2, sendo mais eficiente que o antigo Hashtable  LinkedHashMap Implementação da interface Map que armazena seus elementos na ordem em que foram inseridos.  Hashtable Antiga implementação da interface Map Embora menos eficiente, esta implementação garante a integridade de seus dados quando manipulados por processos concorrentes (threads) da aplicação. 31

32 Collections (Visão Geral) Collection add(T) : boolean remove(T) : boolean size() : int clear() : void iterator() : Iterator Set List get(int) : T set(int, T) : T add(int, T) : void remove(int) : T 32 ArrayList get(int) : T set(int, T) : T add(int, T) : void remove(int) : T LinkedList get(int) : T set(int, T) : T add(int, T) : void remove(int) : T Vector get(int) : T set(int, T) : T add(int, T) : void remove(int) : T HashSet add(T) : boolean remove(T) : boolean size() : int clear() : void iterator() : Iterator LinkedHashSet

33 Maps (Visão Geral) 33 Map put(K, V) : V get(K) : V remove(K) : V clear() : void size() : int keySet() : Set HashMap put(K, V) : V get(K) : V remove(K) : V clear() : void size() : int keySet() : Set LinkedHashMap put(K, V) : V get(K) : V remove(K) : V clear() : void size() : int keySet() : Set Hashtable put(K, V) : V get(K) : V remove(K) : V clear() : void size() : int keySet() : Set

34 Exercício 1  Copie para um novo projeto do eclipse as seguintes classes fornecidas pelo instrutor: br.com.impacta.funcionario.Funcionario br.com.impacta.funcionario.FuncionarioDialog A classe FuncionarioDialog possui um método estático showInputFuncionario() utilizado para que o usuário entre com os dados de um funcionário. Funcionario f = FuncionarioDialog.showInputFuncionario(); 34

35 Exercício 1 (continuação)  Após o usuário digitar os dados e clicar em Ok, o método retornará uma instância da classe Funcionario devidamente preenchida.  Caso o usuário clique no botão Cancelar ou Fechar o método retornará null. 35

36 Exercício 1 (continuação)  Crie no mesmo projeto o pacote br.com.impacta.exercicio e dentro dele a classe ExercicioList contendo o método main()  Crie uma variável do tipo List e instancie alguma implementação da interface List  Crie um loop executando diversas vezes o método FuncionarioDialog.showInputFuncionario()  Cada funcionário preenchido deverá ser adicionado à lista.  Quando o usuário clicar em cancelar (retornando null), o loop deverá ser finalizado e a aplicação deverá exibir os dados conforme próximo slide. 36

37 Exercício 1 (fim) Nome Idade Salário =============== ===== ========= Joaquim Souza 52 8.350,45 Carlos Alberto 19 970,00 Manuel da Silva 37 3.350,00 Antônio Nunes 32 12.200,00 Maria Antunes 29 2.800,40 Total de funcionários: 5 Total de salários : 27.670,85 Média de idade : 33,8 37

38 Exercício 2  Crie a classe ExercicioSet que faz o mesmo que a classe ExercicioList do exercício anterior mas, utilize desta vez um Set de funcionário.  Perceba que ao incluir funcionários com a mesmas características a lista elimina duplicidades e o relatório final não exibe funcionários iguais. 38


Carregar ppt "Capítulo 4. Conjuntos  Introdução  Principais operações de conjuntos  Principais interfaces de conjuntos  A interface Collection  A interface Iterator."

Apresentações semelhantes


Anúncios Google