ESTRUTURA DE DADOS COM ARRAYLIST

Documentos relacionados
JAVA COLLECTIONS API: LISTAS

PROGRAMAÇÃO ORIENTADA A OBJETOS: OCULTAR INFORMAÇÕES E ENCAPSULAMENTO

Orientação a Objetos AULA 09

Orientação a Objetos

AULA 6 - ARRAYS. Array de 10 elementos

Estruturas de Dados Aula 9: Listas (parte 1) 05/04/2011

Técnicas de Programação II

Isto não é exequível!... B[8][6] A[10] Slides_Java_4

Vetores Unimensionais

Aula 5 POO 1 Encapsulamento. Profa. Elaine Faria UFU

2) Escreva um algoritmo que leia um conjunto de 10 notas, armazene-as em uma variável composta chamada NOTA e calcule e imprima a sua média.

JAVA. Professor: Bruno Toledo

LINGUAGEM JAVA - RESUMO

Backup e Recuperação Guia do Usuário

AULA TEÓRICA 7 Tema 7. Colecções (cont.) Vector Ø Criação Ø Manipulação

LISTA DUPLAMENTE ENCADEADA

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 6 Filas

Trabalho Prático II - Resta 1 Data de Entrega: Conferir no calendário!

Programação Orientada a Objetos

Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem C. Exercícios: Structs

ção a Objetos em Java

BC-0505 Processamento da Informação

Switch switch switch switch switch variável_inteira valor1 valor2 switch variável_inteira case case break switch case default default switch switch

5 Arrays. 5.1 Criando um array. 5.2 Inicializando arrays. c:\>java Array Janeiro tem 31 dias.

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

Java Como Programar, 8/E

Exercícios: Vetores e Matrizes

Lista de Exercícios Nro. 1 Programação Orientada a Objetos - SCC204

4 TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

ESTRUTURAS DE DADOS ESTÁTICAS: VETORES

Java possui 4 tipos de dados. Estes tipos de dados são divididos em: boolean, character, integer e float.

Coleções. Prof. Marcelo Roberto Zorzan

Conceitos c++ Prof. Demétrios Coutinho INFORMÁTICA BÁSICA

Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a. cada classe e cada membro da classe (dados e métodos)

Aula 4. TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS 2014 Marcelo Henrique dos Santos -

Tema 7. Colecções AULA TEÓRICA 6. Listas: ArrayList, LinkedList, Vector Ø Criação Ø Manipulação

1. Estrutura de Dados

CONFIGURANDO SERVIDOR SAT SS-1000

Algoritmos APRENDENDO A PROGRAMAR COM C#

Programação Orientada a Objeto Java

Vetores Unimensionais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Cartão de fidelização de clientes das distribuidoras de combustível.

Documento de Requisitos do Sistema SISFOTO Sistema de gerenciamento de eventos fotográficos Versão 1.0

Paradigmas da Programação PPROG. Linguagem JAVA. Contentores de Objetos

Paradigmas de Programação. Genéricos

Vetores, Matrizes e String

OBSERVAÇÕES: EXERCÍCIOS

Estrutura de repetição do/while

Modem e rede local Guia do usuário

CONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO

Atualizações de Software Guia do Usuário

Algoritmos e Estruturas de Dados I. Variáveis Indexadas. Pedro O.S. Vaz de Melo

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Reader e Writer para streams de caracteres (texto).

Arrays e Marizes. João Paulo Q. dos Santos

Linguagem de Programação III

Iteradores. Iteradores. Isabel Harb Manssour. Roteiro. Coleções

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Lista de Exercícios 04 Estruturas de Dados Homogêneas - Vetores

21/05/2013. Informações Complexas. Arquivos de Texto e Arquivos Binários. Hierarquia de Dados. Armazena Informação. Classificação de Arquivos

- Campus Salto. Disciplina: Sistemas de Arquivos Docente: Fernando Santorsula

Sistemas Operacionais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Capítulo 6 - Threads

ESTRUTURAS DE DADOS ESTÁTICAS: MATRIZES

PROVA DE NOÇÕES DE INFORMÁTICA

Linguagem de Programação II Implementação

INF 1010 Estruturas de Dados Avançadas

Num programa em JAVA é possível definir diferentes sequências de execução independente: Threads.

Aula 10 Polimorfismo. Prof. Jefersson Alex dos Santos. Baseado em:

SCC0503 (Algoritmos e Estruturas de Dados II) Prof. Moacir P. Ponti Junior. Trabalho 3

Ciclo com Contador : instrução for. for de variável := expressão to. expressão do instrução

Estruturas de Repetição

Simulado de Linguagem de Programação Java

Conceitos básicos de programação

4 Conceito de Herança

PROGRAMAÇÃO ORIENTADA A OBJETOS: CONSTRUTORES

Programação Orientada a Objetos

Aula 3/4: Vetores/Matrizes e Ponteiros

Sistemas de Objetos DistribuídosRevisão Java e Java ORBs p.1/26

Classes, instâncias e métodos de acesso. prática

Transcrição:

COLÉGIO ESTADUAL ULYSSES GUIMARÃES CURSO TÉCNICO PROFISSIONALIZANTE EM INFORMÁTICA ERINALDO SANCHES NASCIMENTO ESTRUTURA DE DADOS COM ARRAYLIST FOZ DO IGUAÇU 2013

SUMÁRIO 1. ESTRUTURAS DE DADOS COM ARRAYLIST... 1 1.1. USANDO MATRIZES PARA ESTRUTURA DE DADOS... 1 1.2. INTRODUÇÃO À COLEÇÕES... 4 1.3 EXERCÍCIOS... 6 1.4 REFERÊNCIA BIBLIOGRÁFICA... 8

1 1. ESTRUTURAS DE DADOS COM ARRAYLIST Quase todas as aplicações precisa manter o controle de certa quantidade de dados. A maioria das aplicações têm grupos de itens de dados similares. Um aplicativo baseado em GUI pode precisar manter o controle de uma série de janelas de diálogo. Um gerenciador de informações pessoais ou PIM precisa manter o controle de uma série de pessoas. Um sistema operacional precisa manter o controle de quem tem permissão para entrar, quem está conectado no momento, e o que os usuários estão fazendo. A biblioteca precisa acompanhar quem tem livros e quando é devolver. Um servidor de rede poderá ter de manter o controle de seus clientes ativos. Existem estruturas de dados na memória de um programa em execução, há estrutura de dados de um arquivo no disco, e há estrutura na informação armazenada numa base de dados. Cada tipo de estrutura de dados que Java oferece é uma coleção muito poderosa cheia de informações significativas. Uma matriz é uma coleção de comprimento fixo linear de itens de dados. A estrutura de dados chamada LinkedList representa as classes de coleção do Java. 1.1. USANDO MATRIZES PARA ESTRUTURA DE DADOS Um programador precisa manter o controle de uma quantidade fixa de informação e recuperá-la sequencialmente. Usa uma matriz. As matrizes podem ser utilizadas para manter qualquer conjunto linear de dados. Os itens de uma matriz têm de serem todos do mesmo tipo. Os arrays em Java funcionam muito bem. A verificação de tipo fornece integridade razoável, e limites de matriz são sempre verificados pelo sistema de tempo de execução, contribuindo para a confiabilidade. O único problema com matrizes é que se a matriz enche e ainda tem dados para entrarem?

2 A classe Arrays proporciona métodos estáticos para manipulações de array comuns. Estes métodos incluem: sort para ordenar uma matriz (elementos em ordem crescente); binarysearch para procurar uma matriz (determinar se uma matriz contém um valor específico e, em caso afirmativo, onde o valor está localizado); equals para comparar matrizes; fill para colocação de valores em uma matriz. package ed1; import java.util.arrays; public class ManipulacaoVetor { public static void main(string[] args) { double[] darray = {8.4, 9.3, 0.2, 7.9, 3.4; //ordena vetor em ordem ascendente Arrays.sort(dArray); System.out.printf("\nVetor: "); for (double valor : darray) System.out.printf("%.1f", valor); //preenche vetor de 10 elementos com 7 int[] iarray = new int[10]; Arrays.fill(iArray, 7); mostraarray(iarray, "Vetor de inteiros"); //copia iarray1 para iarray1copia int[] iarray1 = {1, 2, 3, 4, 5, 6; int[] iarray1copia = new int[iarray1.length]; System.arraycopy(iArray1, 0, iarray1copia, 0, iarray1.length); mostraarray(iarray1, "Vetor original"); mostraarray(iarray1copia, "Vetor copiado"); //compara se os vetores iarray1 é igual ao vetor iarray1copia boolean b = Arrays.equals(iArray1, iarray1copia); System.out.printf("\n\niArray1 %s iarray1copia\n", (b? "==" : "!=")); //compara se os vetores iarray e iarray1 são iguais

3 localizacao); b = Arrays.equals(iArray, iarray1); System.out.printf("\n\niArray %s iarray1\n", (b? "==" : "!=")); //procura no iarray1 o valor 5 int localizacao = Arrays.binarySearch(iArray, 5); if (localizacao >= 0) System.out.printf( "Encontrado 5 no elemento %d d vetor\n", localizacao); else System.out.println("5 não foi encontrado no vetor"); ////procura no iarray1 o valor 8765 localizacao = Arrays.binarySearch(iArray, 8765); if (localizacao >= 0) System.out.printf( "Encontrado 8765 no elemento %d d vetor\n", else System.out.println("8765 não foi encontrado no vetor"); //mostra os valores do vetor public static void mostraarray(int[] vetor, String descricao){ System.out.printf("\n%s: ", descricao);; for (int valor : vetor) System.out.printf("%d ", valor);

4 1.2. INTRODUÇÃO À COLEÇÕES A API 1 Java fornece várias estruturas de dados predefinidos, chamadas coleções, usadas para armazenar grupos de objetos relacionados. Essas classes fornecem métodos eficazes para organizar, armazenar e recuperar dados sem a necessidade de conhecimento de como os dados estão sendo armazenados. Isto reduz o tempo de desenvolvimento de aplicações. Temos usado matrizes para armazenar sequências de objetos. Matrizes não mudar automaticamente o seu tamanho em tempo de execução para acomodar elementos adicionais. A coleção classe ArrayList <T> (do pacote java.util) fornece uma solução conveniente para este problema poder alterar dinamicamente seu tamanho para acomodar mais elementos. O T (por convenção) é um espaço reservado ao declarar um novo ArrayList, substitua-o com o tipo de elementos que se deseja que o ArrayList armazene. Por exemplo, ArrayList <String> lista; declara lista como uma coleção ArrayList que pode armazenar somente strings. A tabela abaixo mostra alguns métodos comuns de classe ArrayList <T>. Método Descrição add Adiciona um elemento ao final do ArrayList. add (int i, Object o) Inserir o elemento de dado na posição especificada. clear Remove todos os elementos do ArrayList. contains Retorna verdadeiro se o ArrayList contém o elemento especificado, caso contrário, retorna falso. get Retorna o elemento do índice especificado. indexof Retorna o índice da primeira ocorrência do elemento especificado no ArrayList. remove (Object o) Remove a primeira ocorrência do valor especificado. remove (int i) Remove o elemento no índice especificado. size Retorna o número de elementos armazenados na ArrayList. toarray() Retorna um array contendo os objetos na coleção. 1 API, de Application Programming Interface (ou Interface de Programação de Aplicativos) é um conjunto de rotinas e padrões estabelecidos por um software para a utilização das suas funcionalidades por aplicativos que não pretendem envolver-se em detalhes da implementação do software, mas apenas usar seus serviços.

5 Método Descrição trimtosize Arranja a capacidade do ArrayList para o número atual de elementos. Exemplo: cria novo ArrayList vazio de Strings com uma capacidade inicial padrão de 10 elementos. package ed1; import java.util.arraylist; public class ListaArranjo { public static void main(string[] args) { ArrayList<String> itens = new ArrayList<String>(); itens.add("vermelho"); //anexa um item a lista itens.add(0, "amarelo"); //insere o valor no índice 0 System.out.print("Mostra o conteúdo da lista com contador de loop controlado:"); for (int i = 0; i < itens.size(); i++) System.out.printf(" %s", itens.get(i)); aprimorada:"); mostra(itens, "\nmostra o conteúdo da lista com instrução for itens.add("verde"); itens.add("amarelo"); mostra(itens, "Lista com dois novos elementos:"); itens.remove("amarelo"); mostra(itens, "Remove primeira instância de amarelo:"); itens.remove(1); mostra(itens, "Remove o segundo elemento da lista (verde):"); //verifica ser um valor está na lista

6 System.out.printf("\"vermelho\" está %s na lista\n", itens.contains("vermelho")? "" : "não "); //mostra o número de elementos na lista System.out.printf("Tamanho: %s\n", itens.size()); public static void mostra(arraylist<string> itens, String header){ System.out.print(header); //mostra o cabeçalho //mostra cada elemento de itens for (String item : itens) System.out.printf(" %s", item); //mostra final de arquivo System.out.println(); A capacidade indica quantos itens o ArrayList pode conter sem crescer. O ArrayList é implementado usando uma matriz nos bastidores. Quando o ArrayList cresce, ele deve criar uma matriz interna maior e copiar cada elemento para a nova matriz. Esta é uma operação demorada. Seria ineficiente para o ArrayList a crescer cada vez que um elemento é adicionado. Em vez disso, ela cresce apenas quando um elemento é adicionado e o número de elementos é igual à capacidade por exemplo, não há espaço para o novo elemento. 1.3 EXERCÍCIOS 1. Suponha que lista é um objeto da classe ArrayList <String>. Adicione a string "Olá" para a lista ArrayList.

7 2. Suponha que instrucao é um objeto da classe ArrayList <String> que contém a sequência de "Pare" na posição de índice 5. Altere a sequência na posição de índice 5, para "Vá" (sem alterar qualquer dos elementos em outras posições). 3. Suponha que instrucao é um objeto da classe ArrayList <String> que contém sequências nas posições de índice de 0 a 10. Insira a sequência "Vá" na posição de índice 5, de modo que nenhuma string seja removida da lista de instrução. 4. Faça um programa que carregue dois vetores de dez elementos numéricos cada um e mostre um vetor resultante da intercalação desses dois vetores. Vetor 1 3 5 4 2 2 5 3 2 5 9 1 2 3 4 5 6 7 8 9 10 Vetor 2 3 5 4 2 2 5 3 2 5 9 1 2 3 4 5 6 7 8 9 10 Vetor resultante da intercalação 3 3 5 5 4 4 2 2 2 2 5 5 3 3 2 2 5 5 9 9 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 5. Faça um programa que carregue um vetor com oito números inteiros, calcule e mostre dois vetores resultantes. O primeiro vetor deve conter os números positivos. O segundo vetor resultante deve conter os números negativos. Cada vetor resultante vai ter no máximo oito posições, sendo que nem todas devem obrigatoriamente ser utilizadas. 6. Faça um programa que carregue um vetor com dez números inteiros. Calcule e mostre um vetor resultante ordenado de maneira crescente. 7. Faça um programa que, no momento de carregar um vetor com oito números inteiros, já o carregue de maneira ordenada crescente. 8. Faça um programa que carregue um vetor com dez números inteiros. Calcule e mostre os números superiores a 50 e suas respectivas posições. Mostrar a mensagem se não existir nenhum número nessa condição. 9. Faça um programa que carregue um primeiro vetor com dez números inteiros e um segundo vetor com cinco números inteiros. Mostre uma lista dos cinco últimos números do primeiro vetor no segundo vetor. 10. Faça um programa que carregue um vetor com 15 posições, calcule e mostre:

8 O maior elemento do vetor e em que posição esse elemento se encontra. O menor elemento do vetor e em que posição esse elemento se encontra. 11. (ANAC 2012) Ao compilar o código abaixo, que número irá retornar? import java.util.*; public class OutTeste { public static void main (String[] args) { List<Integer> list = new ArrayList<Integer>(); List.add(0, 70); int total = list.get(1); System.out.println(total); 1.4 REFERÊNCIA BIBLIOGRÁFICA SAVITCH, Walter. Absolute Java, 5 th Ed. USA: Pearson, 2013. DEITEL, Paul; DEITEL, Harvey. Java for Programmers, 2 nd Ed. Boston: Pearson Education, 2012. DARWIN, Ian F. Java Cookbook, 2 nd Ed. Sebastopol: O Reilly, 2004.