Coleções em Java 1.

Slides:



Advertisements
Apresentações semelhantes
Walfredo Cirne walfredo.dsc.ufpb.br
Advertisements

Professor: Hyggo Almeida
Coleções em Java Vitor Brandi Junior
Curso de Linguagem Java
Coleções em Java - Parte 2
POO - I PROF.: JEAN CARLO MENDES
Coleções em Java (Parte 1)
Java Como Programar, 8/E Deitel/Deitel, 8e. Java – Como programar Copyright © 2010 Pearson Education Slide 1.
COLEÇÕES Dilvan Moreira (baseado no livro Big Java)
Capítulo 4. Conjuntos  Introdução  Principais operações de conjuntos  Principais interfaces de conjuntos  A interface Collection  A interface Iterator.
Aplicativos para Web Collections Prof. Odair
INE5408 Estruturas de Dados Ponteiros, passagem de parâmetros e modelos de memória.
PROGRAMAÇÃO ORIENTADA A OBJETOS EM C++ Professor: Dilvan Moreira.
Canal seguro de comunicação VoIP na plataforma Android André Luiz Lehmann.
TDD usual abordagem normal é BOTTOM-UP não é necessário nenhum projeto anterior.
Capítulo 5 - LVM Conceitos Iniciais O Gerenciador de Volumes Lógicos (LVM), permite a criação de volumes redimensionáveis que podem ser utilizados.
Relatórios.  O Relatório é um componente ActiveX chamado ActiveReport, que permite a visualização e impressão de valores instantâneos de variáveis do.
Lógica de Programação Aula 25 Prof. Auler Gomes. Introdução - subrotina Muitos problemas grandes ou nem tão grandes, mas de solução mais complexa podem.
COMPONENTE DE GERAÇÃO DE BOLETOS BANCÁRIOS EM DELPHI Aluno: Jonas Ricardo Viel Prof. Adilson Vahldick - Orientador.
Estrutura de Dados (DPADF 0056) Aula 8 – Estr. Clássicas - Lista Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior.
Disciplina: Estrutura de Dados Professor: Jeovane Reges Caxias – MA 2015 ACULDADE DE CIÊNCIAS E TECNOLOGIA DO MARANHÃO.
Supervisão e Redes Industriais Tutorial E3 Elipse Capítulo 14 ARMAZENAMENTO DE DADOS Felipe Domeni, Gabriel Martin, Leandro Gomes Rafael Benoliel, Tiago.
Classes Objetos Atributos Métodos Coletor de Lixo (Garbage Collector ) Confraria do Java Nivelamento. Caroline, Marcelo e Luiz 12/05/2007.
Gerência de Arquivos.
Redes Industriais Alarmes
ESTRUTURA DE DADOS Professor: Marcelo Mendes Turma: MBI-1
Introdução Java.
Introdução OO.
Análise e Projeto de Sistemas II
Programação Orientada a Objetos
INE5408 Estruturas de Dados
Árvores Balanceadas (AVL)
Introdução Java.
PROGRAMAÇÃO ORIENTADA A OBJETO - JAVA
3.1 Classes e Objetos Em um programa orientado a objetos normalmente existem vários objetos de um mesmo tipo. Por exemplo, um programa de controle de.
Prof. Wellington Franco
Java: Interfaces Alcides Calsavara.
Estrutura de dados Pilhas e filas
Programação Gráfica em Java Java 2D
Banco de Dados Representa o arquivo físico de dados, armazenado em dispositivos periféricos, para consulta e atualização pelo usuário. Possui uma série.
Introdução à programação orientada por objetos
Access 2010 Microsoft. Access 2010  O Microsoft Access é um Sistema de Gestão de Base de Sados (SGBD) relacional em ambiente gráfico (Windows), que possibilita.
Eletroeletrônica Multímetro.
Edson Susumu Asaga JavaBeans Edson Susumu Asaga
Algoritmos e Estruturas de Dados I
XIX Escola de Verão IAG/USP Python Contêiner Marcelo Bianchi
Programação Orientada a Objetos
Capítulo 20 Coleções genéricas
Listas Encadeadas.
Desenvolvimento em Camadas
Aula 22 Modularização 22/10/08.
<inserir o nome do consultor> – Consultor Masterdata
Estruturas de Dados Dinâmicas
Rosemary Silveira Filgueiras Melo
Rosemary Silveira Filgueiras Melo
Programação Orientada a Objetos
Instalação e Manutenção de Computadores Técnico em Informática MAI1
Rosemary Silveira Filgueiras Melo
Computação Eletrônica Vetores e Matrizes
Aula Prática Objeto-Relacional Monitoria GDI
Tipos Primitivos de Dados
Prof. Marcio Ferreira Modelagem de dados II
Ordenando Coleções A Classe Collections.
A interface java.util.List
Programação II Mateus Raeder.
CALCULADORA CARACTERE E VARIÁVEIS COMPOSTAS OU VETORES EM JAVA
Gerenciamento de backup e dumps do MySQL
Introdução ao Modelo Relacional Capítulo 2 - Database System Concepts – 6ª. Ed - Silberschatz et al Curso: Ciência da Computação Disciplina: Banco de Dados.
Percorrendo coleções com Iterator
Sistemas de Informação
Transcrição da apresentação:

Coleções em Java 1

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

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

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

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

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?

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

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

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.

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

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 e-mails uma agenda telefônica (coleção de nomes e telefones)

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

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

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

Coleções Java -Interfaces 15

A Java Collection Framework

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

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

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

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

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.

As interfaces

Implementações

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.

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:

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.

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

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

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

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

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

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“).

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

Performance O arquivo tem 20000 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

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

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

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