Baixe o app para aproveitar ainda mais
Prévia do material em texto
25/4/14 1 Array e ArrayList Introdução a Programação II BCC – DEINFO – UFRPE sidney@deinfo.ufpe.br Arrays em Java • São objetos (tipo de referência) • Tamanho não muda • Guardam tipos primitivos e de referência 0 v_1 1 v_2 ... n v_n Tamanho é n + 1 Declaração e inicialização de arrays int numeros[]; Conta contas[]; int a[] = new int[50]; String nomes[] = new String[300]; Declaração sem inicialização Declaração e inicialização com valor padrão Atribuindo valor não padrão • Declarando primeiro e inicializando depois Mostrador mostradores[] = new Mostrador[2]; mostradores[0] = new Mostrador(24); mostradores[1] = new Mostrador(60); Atribuindo valor não padrão • Declaração e inicializando simultânea float cotacoes[] = {1.73f, 1.64f, 1.81f, 1.85f}; String tratamento[] = {“Sr.”, “Sra.”, “Dr.”, “Dra.”}; Tamanho do array • length: atributo que indica o tamanho do array • Índices: de 0 até array.length - 1 • Exemplo: inicializando array de quadrados int quadrados[] = new int[tamanho]; for(int i=0; i < quadrados.length; i++) { quadrados[i] = i*i; } 25/4/14 2 ArrayIndexOutofBound • Exceção que ocorre ao acessar um índice inválido char array[] = new char[10]; array[0] = ‘a’; array[9] = ‘j’; ... array[10] = ‘k’; ArrayIndexOutofBounds for especial • Existe um tipo de for que pode ser utilizado para varrer arrays e outros tipos iterativos (ex: listas) do primeiro ao último elemento • Exemplo: imprimindo todos os elementos do array float cotacoes[] = {1.73f, 1.64f, 1.81f, 1.85f}; for (float cot : cotacoes){ System.out.println(cot); } float cot = 0; for (int i=0; i < cotacoes.length; i++) { cot = cotacoes[i]; System.out.println(cot) } Arrays multidimensionais int[][] a = { {1,0}, {0,1} }; 2 x 2 a [0][0] a [0][1] a [1][0] a [1][1] Arrays multidimensionais int matriz[][] = new int[2][3]; for (int i = 0; i < matriz.length; i++) { for (int j = 0; j < matriz[0].length; j++) { matriz[i][j] = -1; } } Array de linhas Array das colunas Passando argumentos na linha de comando public class AppAnuncio { public static void main (String[] args) { System.out.println(“Anuncio de : ” + args[0]); System.out.println(“Mensagem : ” + args[1]); } } java AppAnuncio “Denis” “Hoje haverá reunião do projeto” Argumentos de uma aplicação • É um array de strings cuja referência é passada para o método principal public void static main (String[] args) • Se nenhum argumento é passado array tem tamanho 0 25/4/14 3 Listando argumentos public class ListandoParametros { public static void main (String[] args) { if(args.length == 0) System.out.println(“0 parametros”); for(int i = 0; i < args.length; i++) { System.out. printf(“Parametro %d = %s \n”, i, args[i]); } } } ArrayList • Implementa a interface (métodos) de uma lista Adicionar, remover, recuperar, concatenar, etc • Utiliza um array internamente • Armazena elementos de apenas um tipo definido na declaração da lista Exemplo: lista de strings ArrayList<String> nomes = new ArrayList(); nomes.add("João"); nomes.add("Pedro"); if(nomes.contains("Pedro")) nomes.remove("Pedro"); System.out.println(nomes.size()); Tipo da lista Imprime tamanho da lista Adiciona na lista Se existe na lista remove Percorrendo um ArrayList for (int i = 0; i < nomes.size(); i++) { System.out.println(nomes.get(i)); } for (String nome : nomes) { System.out.println(nome); } OU Wrapper • Wrapper são utilizados em OO para representar um tipo em contextos onde ele normalmente não poderia ser utilizado • Exemplo: não consigo fazer uma lista de inteiros, mas consigo fazer uma lista de Integer (que empacota inteiros) Wrappers para tipos primitivos Tipo primi(vo Classe Wrapper boolean Boolean char Character byte Byte short Short int Integer long Long float Float double Double 25/4/14 4 Wrapper ArrayList<Double> lista = new ArrayList(); double d = 0.56; lista.add(d); lista.add(1.44376); double d2 = lista.get(0); Garbage Collection (GC) • Mecanismo da JVM que remove da memória objetos não utilizados • O momento no qual o GC é executado não é controlado pelo usuário Muitos objetos não u\lizados! Vou liberar esta parte da memória. Exemplo de objeto sem referência Hora h = new Hora(); h = new Hora(); ... (1) h aponta para um objeto Hora (2) h aponta para outro objeto Hora (3) A par\r deste ponto o GC pode liberar o espaço u\lizado pelo 1º objeto Hora Exercício 1 • Crie uma cópia da classe LivroNotas da Aula 5 com o nome LivroNotasArray • Modifique LivroNotasArray para guarda as notas em um array – Tamanho do array é passado no construtor – Remova o atributo somaNotas – Manter métodos adicionarNota e calculaMedia • Incluir os métodos: – public double getMaiorNota() – public double getMenorNota() Exercício 2 • Crie uma cópia da classe LivroNotasArray do exercício anterior e renomeie para LivroNotasArrayList • Modifique LivroNotasArrayList para trabalhar com ArrayList no lugar de um array
Compartilhar