Programação Orientada a Objetos II Aula - 16 Coleções Prof. Pedro Luís Antonelli Anhanguera Educacional 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 feitas em coleções variam mas normalmente incluem: – – – – – Adição de elementos; Remoção de elementos; Acesso aos elementos; Pesquisa de elementos; Indagar sobre atributos. 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: – A lista ( também chamado de “sequência“); – O conjunto; – O mapa ( também chamado de “dicionário“). Coleção do tipo “Lista” Uma lista é uma coleção de elementos arrumados numa ordem linear, isto é, onde cada elemento tem um antecessor (exceto o primeiro) e um sucessor (exceto o último) Normalmente implementada como "Array" ou "Lista Encadeada“, e pode ser mantida ordenada ou não. Coleção do tipo “Lista” - Operações As operações mais importantes de uma coleção do tipo Lista são: Adição de elementos: adicionar um objeto em qualquer lugar da lista, fornecendo o índice desejado; Remoção de elementos: remover um objeto presente em qualquer lugar da lista, fornecendo o índice desejado; Acesso aos elementos: obter o elemento de qualquer posição da lista, fornecendo o índice desejado; Pesquisa de elementos: descobrir se um certo elemento está na lista e sua posição; Indagar sobre atributos: obter o número de elementos da coleção. Coleção do tipo “Conjunto” Um conjunto é uma coleção que não possui elementos duplicados. No conjunto, não há noção de "ordem dos elementos“, apesar de ser possível ordenado um conjunto. Coleção do tipo “Conjunto” - Operações As operações mais importantes de uma coleção do tipo Conjunto são: Adição de elementos: adicionar um objeto no conjunto (descartando duplicações); Remoção de elementos: remover um objeto presente no conjunto; Acesso aos elementos; Pesquisa de elementos: descobrir se um certo elemento está na coleção; Indagar sobre atributos: obter o número de elementos; Como se vê, as operações são semelhantes, embora diferentes, daquelas para uma Lista. Coleção do tipo “Mapa” Um mapa armazena pares (chave, valor) chamados itens Chaves e valores podem ser de qualquer tipo. A chave é utilizada para achar um elemento rapidamente e estruturas especiais são usadas para que a pesquisa seja rápida. Diz-se portanto que um mapa "mapeia chaves para valores“. Um mapa pode ser mantido ordenado ou não (com respeito às chaves) Coleção do tipo “Mapa” - Operações As operações mais importantes de uma coleção do tipo Mapa são: Adição de elementos: adicionar um item no mapa (fornecendo chave e valor); Remoção de elementos: remover um item com chave dada; Acesso aos elementos; Pesquisa de elementos: descobrir se um elemento com chave dada está na coleção; Indagar sobre atributos: obter o número de elementos. Observe que o acesso à coleção sempre é feita conhecendo a chave. Coleção em Java O pacote java.util oferece algumas classes pré-definidas na API padrão de Java que implementam funcionalidades associadas a coleções. As classes de coleções da API Java compõem o chamado framework de coleções, que foi completamente redefinido a partir da versão 1.2 de Java. O framework tem por raiz duas APIs básicas: - Collection: usada para a manipulação de coleções onde os elementos são objetos individuais; - Map: usada para a manipulação de estruturas de pares de objetos, sendo um deles usado como a chave de acesso. Hierarquia das Coleções em Java A API Collections forneces interfaces e classes para coleções. Hierarquia de classes e interfaces de Collection Hierarquia de classes e interfaces de Map Uso de Conjuntos Coleção de objetos que não admite objetos em duplicata. A classe HashSet da API Collection pode ser utilizada com boa performance. A classe TreeSet da API Collection garante a ordem implícita dos elementos. A interface Set define o contrato dessa coleção. Métodos principais: add: adiciona um objeto ao set. remove: remove um objeto do set. contains: retorna true se o set contém o objeto. Exemplo de conjunto com a classe HashSet no NetBeans Exemplo com o NetBeans- continuação Exemplo com o NetBeans- continuação Exemplo de conjunto com a classe TreeSet Exemplo de conjunto homogêneo Uso de Listas Coleção de objetos que aceita dados em duplicata. A classe ArrayList perde eficiência quando a lista cresce. A classe LinkedList fornece um lista duplamente encadeada, oque melhora consideravelmente a sua performance. A classe Stack implementa os métodos adicionais para push e pop. Uso de Listas A interface List define o contrato dessa coleção. Métodos principais: add: adiciona um objeto a lista. remove: remove um objeto da lista. contains: retorna true se a lista contém o objeto. indexOf: retorna o índice do objeto na lista ou −1. Exemplo de uso da classe ArrayList no Netbeans Uso de Mapas Coleção de objetos como arrays, mas índices são objetos , ou seja um conjunto de pares (chave , valor) de objetos. As chaves não podem ser duplicadas. A classe HashMap oferece uma boa eficiência. A classe TreeMap ofecere a ordenação dos elementos por chave. Uso de Mapas A interface Map define o contrato dessa coleção. Métodos principais: put: adiciona um objeto ao mapa. remove: remove um objeto do mapa. get: recupera um objeto do mapa. KeySet: retorna um set com todas as chaves. values: retorna uma coleção com todos os valores. Exemplo de uso de Mapas no Netbeans Exemplo2 de uso de mapas no Netbeans BIBLIOGRAFIA BÁSICA PADRÃO SANTOS, Rafael. Introdução à Programação Orientada a Objetos Usando Java. 1ª ed. Rio de Janeiro: Campus - Elsevier, 2008. BIBLIOGRAFIA BÁSICA DA UNIDADE 1) DEITEL, Harvery M.. Java : Como Programar. 6ª ed. São Paulo: Pearson - Prentice Hall, 2007. 2) SIERRA, Kathy; BATES, Bert. Use a Cabeça! Java. 1ª ed. Rio de Janeiro: Alta Books, 2005. BIBLIOGRAFIA COMPLEMETAR 1) BARNES, David J.. PROGRAMAÇÃO ORIENTADA A OBJETOS COM JAVA : UMA INTRODUÇÃO PRÁTICA USANDO O BLUE J. 1ª ed. São Paulo: Pearson, 2004. 2) KURNIAWAN, Budi. Java para Web com Servlets, JSP e EJB. 1ª ed. Rio de Janeiro: Ciência Moderna, 2002. 3) GOMES ASCENCIO, Ana Fernanda; CAMPOS, Edilene A.V. de. Fundamentos da Programação de Computadores : Algoritmos, Pascal, C/C++ e Java. 2ª ed. São Paulo: Pearson - Prentice Hall, 2008. 4) HORSTMANN, Cay S.; CORNELL, Gary. Core Java 2 : Fundamentos. 7ª ed. Rio de Janeiro: Alta Books, 2005. 5) ANSELMO, Fernando. Tudo Sobre a JSP : Com o Netbeans em Aplicações Distribuídas. 1ª ed. São Paulo: VisualBooks, 2005. BIBLIOGRAFIA DA APRESENTAÇÃO 1) Coleções e Aplicações – disponível em www.lac.inpe.br/∼rafael.santos – acesso em 22/11/12 2) Java – Array e Coleções- disponível em http://javanoroeste.com.br/javanoroeste/novo/artigos/arrays_coleco es.html- acesso em 10/11/2012 3) Arrays, Coleções e Listas- disponível em: http://www.metropoledigital.ufrn.br/aulas/disciplinas/poo/aula_09.h tml - acesso em 10/11/2012 4)Coleções:http://www.dsc.ufcg.edu.br/~jacques/cursos/p2/html/ed/ colecoes.htm – acesso em 10/11/2012