Baixe o app para aproveitar ainda mais
Prévia do material em texto
03/10/2020 - no title specified moodlep.ucv.edu.br/moodle/pluginfile.php/353969/mod_resource/content/0/04 - Java - Vetores e Listas.html 1/11 Java – Vetores e Listas Rômulo Ferreira Douro SIN2 Sumário 1 Vetores 1.1 Declaração e instanciação 1.2 Outras formas de declaração 1.3 Acessando e alterando um elemento do vetor 1.3.1 Percorrendo um vetor 1.4 Alguns erros 2 Listas 2.1 Definição 2.1.1 LinkedList 2.1.2 ArrayList 03/10/2020 - no title specified moodlep.ucv.edu.br/moodle/pluginfile.php/353969/mod_resource/content/0/04 - Java - Vetores e Listas.html 2/11 2.2 Criando listas 2.3 Métodos importantes 2.3.1 Adicionando elementos 2.3.2 Obtendo a quantidade de elementos 2.3.3 Recuperando elementos 2.3.4 Percorrento uma lista 2.3.5 Alterando elementos 2.3.6 Excluindo elementos 2.4 Atenção 2.5 Documentação e código 1 Vetores Um array ou “vetor” é a forma mais comum de dados estruturados da linguagem Java. Um array é simplesmente um conjunto de variáveis do mesmo tipo, igualmente acessíveis por um índice → Um vetor é um array com uma dimensão O vetor é uma estrutura capaz de armazenar vários dados TODOS DO MESMO TIPO. Ao declarar o vetor, seu tipo já é definido. Logo, o vetor é uma estrutura de dados homogênea. Os vetores consistem de posições contínuas de memória, e seus elementos são acessados por meio de um índice. O índice mais baixo corresponde ao primeiro elemento e o mais alto ao último elemento. 1.1 Declaração e instanciação Um vetor é um objeto e todo objeto, para ser usado, precisa ser declarado e instanciado (criado). Na declaração não é necessário atribuir o tamanho do vetor. Exemplo //declaração do vetor int[] array; //instanciação do vetor array = new int[10]; Na instanciação usa-se a palavra reservada ‘new’, esse é o procedimento executado sempre que se faz a criação de um objeto. 03/10/2020 - no title specified moodlep.ucv.edu.br/moodle/pluginfile.php/353969/mod_resource/content/0/04 - Java - Vetores e Listas.html 3/11 É possível declarar e construir o array na mesma linha //declaração e instanciação do vetor int[] array = new int[10]; Uma vez declarado o tamanho de um vetor, ele não pode mais ser alterado. A capacidade de armazenamento do vetor é dada pelo número entr os colchetes (é SEMPRE um valor inteiro). O tamanho de um vetor é determinado em sua criação, antes da execução do programa. Isto significa que o tamanho de um vetor NÃO poderá ser alterado durante a execução do programa. Exemplo: Declarar um vetor de 100 elementos, chamado pontos, e do tipo int int[] pontos = new int[100]; Em uma exemplificação, haveria em memória, espaços subjascentes em que se poderiam armazenar 100 números inteiros como a imagem a seguir Na primeira linha, os números representam os índices do vetor (a forma de acesso a cada elemento de um vetor se dá através do seu índice). Quando arrays de tipos primitivos do java são inicializados, os elementos automaticamente recebem os valores default que no caso de tipos numéricos é zero. O índice inicial de todo vetor é sempre 0 (zero). O índice final é sempre o tamanho do vetor menos 1 (tam – 1), ou seja, neste caso é 99. Em resumo: Um array é um agrupamento de dados adjacentes na memória. Exemplo public static void main(String[] args) { //declaração e instanciação do vetor //com 10 posições //todas são inicializadas com 0 (zero) int[] idades = new int[10]; //altera o valor na posição 2 para 54 idades[2] = 54; } 03/10/2020 - no title specified moodlep.ucv.edu.br/moodle/pluginfile.php/353969/mod_resource/content/0/04 - Java - Vetores e Listas.html 4/11 Situação do vetor ao final da execução: Todo vetor em Java possui a propriedade ‘length’ que retorna o tamanho do vetor. Exemplo int vetor[] = new int[5]; //aqui irá imprimir 5 System.out.println(vetor.length); 1.2 Outras formas de declaração Em Java também existe a possibilidade de definir os valores de um array no momento de sua criação. Exemplo //cria um vetor chamado vet1 com 3 posições //já preenchidas com os elementos 1, 2 e 3 int vet1[] = {1, 2, 3}; //cria um vetor chamado vet1 com 3 posições //já preenchidas com os elementos 1, 2 e 3 int vet2[] = new int[]{1, 2, 3}; Outros exemplos /* Declara um vetor de float de 30 posições Índice inicial = 0 Índice final = 29 */ float[] dados = new float[30]; /* Declara um vetor de caracteres de 18 posições Índice inicial = 0 Índice final = 17 */ char[] nome = new char[18]; 03/10/2020 - no title specified moodlep.ucv.edu.br/moodle/pluginfile.php/353969/mod_resource/content/0/04 - Java - Vetores e Listas.html 5/11 /* Declara um vetor de inteiros de n posições Índice inicial = 0 Índice final = n – 1 */ int n = 10; int[] media = new int[n]; /* Declara um vetor de double de 3*x posições Índice inicial = 0 Índice final = 3*x – 1 */ double[] vet = new double[3 * n]; 1.3 Acessando e alterando um elemento do vetor Para acessar um elemento em um vetor precisamos do seu literal (nome da variável declarada como vetor) e a posição do elemento (respeitando os limites do vetor). A alteração é feita de maneira simples usando atribuição. Exemplo int[] idades = new int[10]; //altera o valor na posição 2 para 54 idades[2] = 54; //recupera o valor na posição 1 do vetor de idades //atribui à variável idade1 int idade1 = idades[1]; //imprime o valor System.out.println(idade1); Outros exemplos int vet2[] = new int[]{1, 2, 3}; int idx=0; //O índice idx+1 do vetor recebe o valor armazenado no índice 2 vet2[idx + 1] = vet2[2]; //incrementa o valor que está na posição 0 do vetor vet2[0]++; //decrementa o valor que está na posição 1 do vetor --vet2[1]; //efetua verificação com elemento do vetor 03/10/2020 - no title specified moodlep.ucv.edu.br/moodle/pluginfile.php/353969/mod_resource/content/0/04 - Java - Vetores e Listas.html 6/11 if(vet2[0]>0){ System.out.println("positivo"); } 1.3.1 Percorrendo um vetor Para percorrer um vetor geralmente usa-se a propriedade length como critério de parada em alguma estrutura de repetição. Exemplo: int vet1[] = {1, 2, 3}; //imprime os valores do vetor for(int i=0; i<vet1.length; i++){ System.out.println(vet1[i]); } 1.4 Alguns erros public static void main(String[] args) { float[] sequencia = new float[25]; sequencia[0] = 0; //Correto (int em float) sequencia[1] = 1.4; //Errado (falta f) tipo diferente sequencia[1.5] = 1; //Errado (indice deve ser inteiro) sequencia[-1] = -1; //Errado (indice negativo)* sequencia[23] = "23"; //Errado (String!!) tipo diferente sequencia[24] = 24; //Correto! sequencia[25] = 25; //Errado (indice >=25)* } Para fixar! 2 Listas Em java temos objetos que nos auxiliam a trabalhar com estruturas de dados tais como ArrayList e LinkedList. Ambos possuem métodos 03/10/2020 - no title specified moodlep.ucv.edu.br/moodle/pluginfile.php/353969/mod_resource/content/0/04 - Java - Vetores e Listas.html 7/11 propícios para armazenar, atualizar, excluir, recuperar e, em alguns casos, ordenar os dados inseridos nessas estruturas. Veremos aqui uma breve introdução de como usar tais objetos – não iremos abordar por completo todas as possibilidades de uso de tais componentes, isso é tarefa de pesquisa. 2.1 Definição 2.1.1 LinkedList Um objeto java do tipo LinkedList é uma estrutura de dados para armazenamento de elementos baseada no conceito de lista encadeada onde os elementos nela armazenados são organizados com ligações entre os mesmos – internamente usa uma lista duplamente encadeada para organização dos dados1. 2.1.2 ArrayList Um objeto java do tipo ArrayList é uma estrutura de dados para armazenamento de elementos baseada no conceito de array onde os elementos nela armazenados são organizados sequencialmente num vetor – internamente usa um array de tamanhovariável2 para organização dos dados. 2.2 Criando listas Para criar uma lista (assim como qualquer objeto em java) deve ser usada a palavra reservada new seguido do construtor do referido objeto. O construtor de um objeto é um método especial que leva o nome da classe, no caso LinkedList ou ArrayList. Exemplo import java.util.ArrayList; import java.util.LinkedList; public class ExemploListas01 { public static void main(String[] args) { //cria um objeto do tipo LinkedList LinkedList LL = new LinkedList(); //cria um objeto do tipo ArrayList ArrayList AL = new ArrayList(); 03/10/2020 - no title specified moodlep.ucv.edu.br/moodle/pluginfile.php/353969/mod_resource/content/0/04 - Java - Vetores e Listas.html 8/11 //ao lado direito de cada atribuição temos a //execução do método construtor para o objeto } } Uma observação importante está ligada ao fato de podermos restringir o tipo de elemento que iremos armazenar nas listas usando um conceito chamado Generic. Exemplo import java.util.ArrayList; public class ExemploListas01 { public static void main(String[] args) { //cria um objeto do tipo ArrayList //que só pode armazenar objetos do tipo String //ou seja, só pode armazenar palavras ArrayList<String> AL = new ArrayList(); } } Com os objetos devidamente criados podemos utilizá-los para os seus propósitos, os quais, veremos alguns adiante. 2.3 Métodos importantes Nas próximas seções serão mostrados alguns métodos importantes para a utilização de listas em Java. 2.3.1 Adicionando elementos O método add é usado para adicionar elementos a uma lista. Exemplo import java.util.ArrayList; public class ExemploListas01 { public static void main(String[] args) { //cria um objeto do tipo ArrayList //que só pode armazenar objetos do tipo String //ou seja, só pode armazenar palavras ArrayList<String> AL = new ArrayList(); //adiciona a String "joey ramone" AL.add("joey ramone"); //adiciona a String "joan jett" AL.add("joan jett"); } } 03/10/2020 - no title specified moodlep.ucv.edu.br/moodle/pluginfile.php/353969/mod_resource/content/0/04 - Java - Vetores e Listas.html 9/11 2.3.2 Obtendo a quantidade de elementos O método size retorna a quantidade de elementos inseridos na lista até o presente momento. Exemplo //retorna a quantidade de elementos armazenados na lista int quantidade = AL.size(); System.out.println(quantidade); 2.3.3 Recuperando elementos Para recuperar um elemento de uma lista usamos o método get que recebe como parâmetro o índice do elemento. A indexação de elementos é iniciada em 0 (zero) e termina com a quantidade de elementos inseridos – 1 (lembrando que essa quantidade pode variar pois pode-se inserir e remover elementos ‘à vontade’. Exemplo //recupera o valor armazenado na posição 0 String nome = AL.get(0); System.out.println(nome); 2.3.4 Percorrento uma lista Para percorrer uma lista podemos usar uma estrutura de repetição qualquer em conjunto com a quantidade de elementos na lista (dado pelo método size). Exemplo //mostra todos os elementos da lista for (int i = 0; i < AL.size(); i++) { System.out.println(AL.get(i)); } Uma outra forma é percorrer a lista usando o conceito de for-each (ou enhanced for). Esse método se vale do uso de uma variável auxiliar que deve ser do mesmo tipo declarado para os elementos da lista. Exemplo //mostra todos os elementos da lista 03/10/2020 - no title specified moodlep.ucv.edu.br/moodle/pluginfile.php/353969/mod_resource/content/0/04 - Java - Vetores e Listas.html 10/11 //a variável auxiliar nesse exemplo é do tipo String //pois os elementos da lista são String for(String auxiliar : AL){ System.out.println(auxiliar); } 2.3.5 Alterando elementos O método set é usado para alterar um elemento da lista. Ele recebe um índice de posição onde deve ser alterado o elemento e um novo valor que será inserido nessa posição. Exemplo //altera o elemento da posição 0 AL.set(0, "angus young"); 2.3.6 Excluindo elementos Para remover elementos precisamos executar o método remove, o qual deve receber como parâmetro o índice do elemento que será removido. Exemplo //remove o elemento da posição 0 AL.remove(0); 2.4 Atenção Toda execução de métodos deve estar correlacionada aos limites da lista. Você nunca deve acessar um índice negativo ou superior ao tamanho da lista (size - 1). Você deve respeitar os tipos declarados associados à lista. Uma lista nula não existe – então você não pode fazer nada com ela antes de criá-la (método new). Uma lista vazia não tem elementos (size == 0). Erros primários podem (e irão) ocorrer. Respire fundo, mantenha a calma, encontre a causa e solucione! 03/10/2020 - no title specified moodlep.ucv.edu.br/moodle/pluginfile.php/353969/mod_resource/content/0/04 - Java - Vetores e Listas.html 11/11 • ◦ ▪ ◦ ▪ • ◦ ▪ ◦ ▪ 2.5 Documentação e código A documentação oficial e o código fonte da implementação OJDK pode ser obtido facilmente nos locais listados a seguir: LinkedList Documentação Oficial https://docs.oracle.com/javase/8/docs/api/java/util/LinkedList.html Código fonte http://www.docjar.com/html/api/java/util/LinkedList.java.html ArrayList Documentação Oficial https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html Código fonte http://www.docjar.com/html/api/java/util/ArrayList.java.html 1 Esquema de lista dulplamente encadeada. Fonte: https://pt.wikipedia.org/wiki/Lista_duplamente_ligada 2 O tamanho varia através de programação! https://docs.oracle.com/javase/8/docs/api/java/util/LinkedList.html http://www.docjar.com/html/api/java/util/LinkedList.java.html https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html http://www.docjar.com/html/api/java/util/ArrayList.java.html
Compartilhar