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

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

Coleções em Java 1.

Apresentações semelhantes


Apresentação em tema: "Coleções em Java 1."— Transcrição da apresentação:

1 Coleções em Java 1

2 Agenda Introdução Coleções Listas Conjuntos Mapas Performance
Como escolher uma coleção 2

3 Introdução É possível criar um array, de tamanho fixo, em Java, tanto de tipos primitivos como de objetos // declaração de array int[] x, y; int z[]; // criação de 10 posições x = new int[10]; 3

4 Problema Manipular arrays é bastante trabalhoso. Essa dificuldade aparece em diversos momentos: Não conseguimos saber quantas posições do array já foram “populadas” sem criar, para isso, métodos auxiliares. É impossível buscar diretamente por um determinado elemento cujo índice não se sabe; 4

5 Problema Depois de criado, o array não pode ser redimensionado em Java. O que podemos fazer é copiar os elementos de um array para outro. int[] x = {1,2,3}; int[] y = new int[5]; System.arraycopy(x, 0, y, 0, 3); for (int i = 0; i < y.length; i++) { System.out.println(y[i]); } // será impresso 1,2,3,0 e 0 5

6 Coleções Supondo que os dados armazenados representem contas, o que acontece quando precisarmos inserir uma nova conta no banco? Precisaremos procurar por um espaço vazio? Guardaremos as posições vazias em alguma estrutura de dados externa? E se não houver espaço vazio? Teríamos de criar um array maior e copiar os dados do antigo para ele?

7 Coleções Supondo que os dados armazenados representem contas, o que acontece quando precisarmos inserir uma nova conta no banco? Como posso saber quantas posições estão sendo usadas no array? Vou precisar sempre percorrer o array inteiro para conseguir essa informação? Com esses e outros objetivos em mente, a Sun criou um conjunto de classes e interfaces conhecido como Collections Framework

8 Coleções Desde a versão 1.2 a plataforma J2SE inclui um framework de coleções. A API Collections framework é robusta e possui diversas classes que representam estruturas de dados avançadas. A API do Collections é uma arquitetura unificada para representação e manipulação de coleções, permitindo que elas sejam manipuladas independentemente dos detalhes de sua implementação. 8

9 O que é uma coleção? Uma coleção (também denominada container) é simplesmente um objeto que agrupa múltiplos elementos dentro de uma única unidade São utilizadas para armazenar, recuperar e manipular dados, além de transmitir dados de um método para outro.

10 Resumindo... Coleção: É um objeto que representa um grupo de objetos.
Os objetos são armazenados em uma estrutura de dados. Utilizadas para armazenar, recuperar e manipular elementos. 10

11 O que é uma coleção? Tipicamente representam itens de dados que naturalmente formam um grupo. Exemplo: Uma coleção de cartas de um baralho Uma coleção de s uma agenda telefônica (coleção de nomes e telefones)

12 Coleções – Conceito Geral
Uma coleção é uma estrutura de dados que permite armazenar vários objetos. Em Java, a coleção também é um objeto. As operações que podem ser variam, mas normalmente incluem: Adição de elementos; Remoção de elementos; Acesso aos elementos; Pesquisa de elementos; feitas em coleções

13 Collections Framework
Conjunto de interfaces, implementações e algoritmos Vantagens Reduz esforço de programação Aumenta velocidade e qualidade na programação Permite interoperabilidade entre API´s Reduz esforço para aprender uma nova API Reduz esforço para criar uma nova API Promove reuso 13

14 Collections Framework
Consistem em: Interfaces de coleções Implementações de uso geral Implementações abstratas Algoritmos 14

15 Coleções Java -Interfaces
15

16 A Java Collection Framework

17 Quem faz o que ? Collection: Interface Set:
representa um grupo de objetos denominados elementos é apenas uma interface que define métodos para se adicionar, remover e pesquisar em uma estrutura de dados o JDK não provê implementação direta desta Interface. Interface Set: coleção que não permite elementos duplicados um set não pode conter um par e1, e2, tal que e1.equals(e2) Hashset extends AbstractSet implements Set: mantém uma coleção de objetos nos quais se pode aplicar operações de intersecção, diferença e iteração TreeSet: apresenta a característica de armazenar os elementos em ordem crescente

18 Quem faz o que ? (cont) List
é uma coleção que traz uma ordem associada aos seus elementos os elementos podem ser acessados pelos seus respectivos índices dentro da lista permitem elementos duplicados ArrayList extends AsbtractList implements List provê métodos para se manipular o tamanho do array utilizado para armazenar a lista cada instância de ArrayList possui uma capacidade (10 elementos por default) permite todos os elementos (inclusive elementos null) LinkedList implements List provê métodos para se manipular elementos nas extremidades da lista

19 Quem faz o que ? (cont) Map HashMap extends AbstractMap implements Map
permite armazenar pares chave/valor (similar a uma tabela de 2 colunas) dada a chave, permite recuperar o valor associado não permite chaves duplicadas HashMap extends AbstractMap implements Map permite o armazenamento de null para valores e chaves

20 Interfaces São utilizadas sempre que possível como:
Parâmetros de métodos Retorno dos métodos Lembrar sempre posso utilizar uma interface onde poderia se usar uma implementação. Permite polimorfismo 20

21 Características Oferece uma biblioteca de classes e interfaces (pacote java.util). Implementa as principais estruturas de dados de forma reutilizável, usando apenas duas interfaces comuns. Oferece implementações de cursor para iteração para extrair dados de qualquer estrutura usando uma única interface.

22 As interfaces

23 Implementações

24 Várias possibilidades
Como você pôde ver, existem várias classes/interfaces com características específicas para cada necessidade. Vamos ver as soluções mais comuns. O mundo das coleções é muito extenso e não será totalmente coberto nesta apresentação. Mesmo assim, a grande maioria das necessidades dos sistema é atendida com folga pelos exemplos aqui mostrados.

25 Principais Interfaces: Java.Util.Collection
As coleções têm como base a interface Collection, que define métodos para adicionar e remover um elemento, e verificar se ele está na coleção, entre outras operações, como mostra a tabela a seguir:

26 Principais Interfaces: Java.Util.Collection
Uma coleção pode implementar diretamente a interface Collection, porém normalmente se usa uma das duas sub interfaces mais famosas: justamente Set e List.

27 Collection Raiz da hierarquia Grupo mais genérico de elementos
Não garante nas implementações Duplicatas Ordenação Não possui nenhuma implementação direta Iterator, estrutura de navegação next, hasNext, remove(opcional) 27

28 Collection Define as operaçoes básicas para as coleções de objetos:
Adição de elementos; Remoção de elementos; Acesso aos elementos; Pesquisa de elementos; Metadados da coleção. 28

29 Collection A tabela abaixo mostra os principais métodos da interface Collection. Tipo do método Nome do método Adição add(Object elemento) Remoção remove(Object elemento) clear() Acesso iterator() Pesquisa contains (Object elemento) Atributos size() 29 29

30 Collection O código abaixo mostra os principais métodos da interface Collection. public interface Collection { // Basic Operations int size(); boolean isEmpty(); boolean contains(Object element); boolean add(Object element); // Optional boolean remove(Object element); // Optional Iterator iterator(); // Bulk Operations boolean containsAll(Collection c); boolean addAll(Collection c); // Optional boolean removeAll(Collection c); // Optional boolean retainAll(Collection c); // Optional void clear(); // Optional // Array Operations Object[] toArray(); Object[] toArray(Object a[]); } 30

31 Existem vários tipos de coleções, sendo que a utilização de cada um depende da necessidade da aplicação. 31

32 Coleções – Tipos Dependendo da forma de fazer as 4 operações básicas (adição, remoção, acesso e pesquisa), teremos vários tipos de coleções Os três grandes tipos de coleções são: Lista ( também chamado de “sequência“); Conjunto; Mapa( também chamado de “dicionário“).

33 Performance Para testar a performance das coleções podemos criar um arquivo texto contendo um conjunto de dados. Cada elemento desse conjunto será inserido na coleção e depois pesquisado. No final teremos o tempo que cada uma das estruturas levou para executar as operações. 33

34 Performance O arquivo tem linhas e cada linha é composta de valor1:valor2. Quando a coleção for um mapa o primeiro valor será a chave e o segundo é o valor. Caso a coleção for uma lista ou conjunto será inserida a linha inteira. 34

35 Performance Os tempos podem ser vistos na tabela abaixo: Coleção Carga
Pesquisa Total ArrayList 0,21 66,58 66,79 LinkedList 0,35 85,66 86,01 Vector 0,42 66,45 66,87 HashSet 0,46 0,18 0,64 TreeSet 0,61 0,27 0,88 HashMap 0,62 0,22 0,84 TreeMap 0,83 0,34 1,17 Hashtable 0,60 0,23 35

36 Escolha da coleção A aplicação é quem indica o tipo de coleção que deve ser usada: Se a aplicação requer duplicatas use lista; Se requer muita pesquisa de dados não use lista; Se não requer duplicatas e não utiliza chaves, use conjunto; Se não requer duplicatas e utiliza chaves, use mapa. 36

37 Quando usar o que? Se a coleção não apresenta elementos duplicados e se deseja que os elementos estejam em ordem: TreeSet Se existem entradas duplicadas: qualquer implementação de List Se a coleção é composta por pares chave/valor: qualquer implementação de Map


Carregar ppt "Coleções em Java 1."

Apresentações semelhantes


Anúncios Google