Sei sulla pagina 1di 27

Colees

Rodrigo Paes

Instituto de Computao UFAL

Associaes

Carro

Atributo - coleo

1
Marcha

4
Roda

1
Volante Aluno

Atributos simples
Professor

Instituto de Computao UFAL

Associaes
Atributos simples (relacionamentos 1 para 1) Um atributo para cada instncia??? Ou seja, n atributos???
Carro public class Carro{ private Marcha marcha; private Volante volante; public Carro(Marcha marcha, Volante volante){ this.marcha = marcha; this.volante = volante; } }

1
Marcha

1
Volante

Instituto de Computao UFAL

Associaes
Atributos de coleo (relacionamentos 1 para n) Um atributo para cada instncia??? Ou seja, n atributos???
Carro public class Carro{ private Marcha marcha; private Volante volante; private Roda roda1; private Roda roda2; private Roda roda3; private Roda roda4; ... }

4
Roda

Ps-Sistemas de Informao - FAL

Instituto de Computao UFAL

Associaes
Problema??? E se for um time de futebol??? Relacionamento entre Time e Jogador 1 para 11.

Time

11
Jogador

public class Time{ private Jogador jogador1; private Jogador jogador2; ... private Jogador jogador11; ... }

Ps-Sistemas de Informao - FAL

Instituto de Computao UFAL

Associaes
Precisamos de um saco para guardar vrios objetos de um mesmo tipo Precisamos de um array

Roda[ ] rodas = new Roda[4];

Array de rodas!!!

Atributo = coleo de Roda


6

Instituto de Computao UFAL

Associaes
Usando array!!!

Carro

4
Roda

public class Carro{ private Roda[ ] rodas; }

Ps-Sistemas de Informao - FAL

Instituto de Computao UFAL

Associaes
Usando array!!!
public class TestePrincipal{ public static void main(String args[]){ Marcha minhaMarcha = new Marcha(); Volante meuVolante = new Volante(); Roda[ ] rodas = new Roda[4]; rodas[0] = new Roda(Dianteira direita); rodas[1] = new Roda(Dianteira esquerda); rodas[2] = new Roda(Traseira direita); rodas[3] = new Roda(Traseira esquerda); Carro meuCarro = new Carro(minhaMarcha, meuVolante, rodas); } }
Ps-Sistemas de Informao - FAL

Instituto de Computao UFAL

E se ?
No soubermos o nmero de objetos a priori?

Cheio!!
Turma

n
Alunos

Rodrigo Paes r0drigopaes@yahoo.com.br

Instituto de Computao UFAL

E se ?
Aumentamos o tamanho do saco dinmicamente

Turma

n
Alunos

Rodrigo Paes r0drigopaes@yahoo.com.br

Instituto de Computao UFAL

Coleo
Coleo
Objeto que agrupa mltiplos elementos em uma nica unidade Armazena, recupera e manipula dados agregados

Java possui um conjunto de classes e interfaces para manipular colees

Rodrigo Paes r0drigopaes@yahoo.com.br

Instituto de Computao UFAL

Estrutura bsica
Em Java, as colees esto divididas em 03 partes
Definio das interfaces
Definem os tipos e como eles podem ser manipulados

Implementao das interfaces atravs de classes concretas Um conjunto de algoritmos para a manipulao dessas colees
Busca, ordenao

http://java.sun.com/docs/books/tutorial/collections/index.html
Rodrigo Paes r0drigopaes@yahoo.com.br

Instituto de Computao UFAL

Interfaces principais

Rodrigo Paes r0drigopaes@yahoo.com.br

Instituto de Computao UFAL

Collection
Raiz da hierarquia Representa um grupo de objetos No diz muita coisa:
Alguns tipos permitem elementos duplicados, outros no Alguns so ordenados, outros no

Mas contm vrios mtodos bsicos

Rodrigo Paes r0drigopaes@yahoo.com.br

Instituto de Computao UFAL

Mtodos principais de Collection


int size(); boolean isEmpty(); boolean contains(Object element); boolean add(E element); //optional boolean remove(Object element); //optional Iterator iterator(); boolean containsAll(Collection c); boolean addAll(Collection c); boolean removeAll(Collection c); boolean retainAll(Collection c); void clear(); Object[] toArray();
Rodrigo Paes r0drigopaes@yahoo.com.br

Instituto de Computao UFAL

Set
uma coleo que no pode conter elementos duplicados a noo de conjunto da matemtica

Rodrigo Paes r0drigopaes@yahoo.com.br

Instituto de Computao UFAL

List
uma coleo ordenada Podem conter elementos duplicados Contm mtodos de acesso a determinadas posies da coleo.
Object get(int index); Object set(int index, Object element); boolean add(Object element); void add(int index, Object element); Object remove(int index); boolean addAll(int index, Collection c); // Search int indexOf(Object o); int lastIndexOf(Object o); // Range-view List subList(int from, int to);

Rodrigo Paes r0drigopaes@yahoo.com.br

Instituto de Computao UFAL

Map
Manipula objetos fazendo chave
key 2003G55d041v9 2005G55d012v7 value

valor
rodrigo:Aluno nome:Rodrigo idade:28

taise:Aluno nome:Tase idade:27

Rodrigo Paes r0drigopaes@yahoo.com.br

Instituto de Computao UFAL

Map
Operaes bsicas
Object put(Object key, Object value); Object get(Object key); Object remove(Object key); boolean containsKey(Object key); boolean containsValue(Object value); int size(); boolean isEmpty();

Rodrigo Paes r0drigopaes@yahoo.com.br

Instituto de Computao UFAL

Testando o seu entendimento


Considere as interfaces: Set, List, Queue e Map
Tarefa 01;
A TECTOY precisa guardar o registro de todos os seus funcionrios; Todo ms um funcionrio escolhido randomicamente para receber um brinquedo grtis

Tarefa 02
A TECTOY vai dar os nomes de seus funcionrios aos brinquedos Somente o primeiro nome ser utilizado, o sobrenome deve ser ignorado Cada nome s poder ser utilizado uma nica vez Prepare uma lista de nomes nicos

Rodrigo Paes r0drigopaes@yahoo.com.br

Instituto de Computao UFAL

Vimos as principais interfaces, agora vamos ver as principais implementaes

Queue
LinkedList PriorityQueue
Rodrigo Paes r0drigopaes@yahoo.com.br

Instituto de Computao UFAL

Regras
Sempre devemos ter referncias as interfaces e nunca ao tipo concreto

Rodrigo Paes r0drigopaes@yahoo.com.br

Instituto de Computao UFAL

Exerccio
Leia um arquivo contendo linhas com dois campos separados por ":" Insira cada linha numa coleo
Se a coleo for um mapa, o primeiro campo a chave, o segundo campo a valor Se a coleo no for um mapa, insira a linha inteira como String

Leia um segundo arquivo linha por linha e pesquise se cada linha est na coleo, imprimindo quantos elementos foram descobertos Use as 06 classes abaixo
ArrayList LinkedList HashSet TreeSet HashMap TreeMap
Rodrigo Paes r0drigopaes@yahoo.com.br

Instituto de Computao UFAL

Exerccio: exemplo de entrada e sada


Entrada
java exemplo.collections.TestarColecoes XX arquivo1.txt arquivo2.txt
Onde, xx: al = usar ArrayList ll = usar LinkedList hs = usar HashSet ts = usar TreeSet hm = usar HashMap tm = usar TreeMap

Sada
Elementos encontrados usando java.util.HashMap: 5000 Tempo da carga de dados: 2.032 segundos Tempo da pesquisa de dados: 0.807 segundos Tempo total: 2.839 segundos

Rodrigo Paes r0drigopaes@yahoo.com.br

Instituto de Computao UFAL

Exerccio: observaes
Arquivo 1 est disponvel no site Arquivo 2 o que ser pesquisado Importante:
O cdigo que voc enviar deve rodar usando a mesma sintaxe da linha de comando do slide anterior

Rodrigo Paes r0drigopaes@yahoo.com.br

Instituto de Computao UFAL

Exerccio: dicas
Leitura de arquivos
BufferedReader arquivoComDados = new BufferedReader(new FileReader(args[1])); BufferedReader arquivoComPesquisa = new BufferedReader(new FileReader(args[2]));
http://java.sun.com/docs/books/tutorial/essential/io/charstreams.html http://www.javapractices.com/topic/TopicAction.do?Id=42 http://java.sun.com/docs/books/tutorial/essential/io/ http://java.sun.com/docs/books/tutorial/essential/io/datastreams.html

Mais fcil

Rodrigo Paes r0drigopaes@yahoo.com.br

Instituto de Computao UFAL

O que achou?
Quem foi mais rpido?
Para carregar? Para pesquisar?

List, Set, Map, o que usar quando:


sua aplicao precisar manter duplicatas
List

precisar fazer muita pesquisa


Fuja de List

sua aplicao no precisar manter duplicatas e no usa chaves


Set

sua aplicao no precisar manter duplicatas e usa chaves


Map

Rodrigo Paes r0drigopaes@yahoo.com.br

Potrebbero piacerti anche