sexta-feira, 3 de julho de 2009

Tipos de dados em Java: Array e Vector

Olá, neste post/texto/artigo vamos falar um pouco sobre tipos de dados chamados de "coleções" em Java, são classes que agrupam outros dados.

Tipos de dados: Array

Um Array ou uma matriz é um conjunto de dados de um mesmo tipo agrupados em uma mesma variável, esses valores são acessados através de índices numéricos, índices associativos (Arrays associativos não são suportados).

Em Java por ser uma linguagem estaticamente tipada, podemos ter em uma coleção de dados de um mesmo tipo apenas, logo podemos ter um Array de inteiros, de Strings .... podemos também ter matrizes, ou seja em duas dimensões (Array bidimensional) ou de mais dimensões, os índices a direita vão indicando em que nível de profundidade estamos acessando.

Exemplo, declarando um Array de inteiros:

int[] parafusos;

parafusos = new int[10];


A limitação do Array é que ele tem um tamanho estático, ou seja, usamos esta estrutura quando sabemos quantos valores queremos armazenar na variável, por ser uma estrutura estática, seu uso requer menos processamento, por outro lado é inflexível.

Para atribuir e resgatar dados de um Array, acessamos os seus índices. Veja no código a seguir.

parafusos[1] = 12;

parafusos[2] = 50;

parafusos[3] = 9;

parafusos[4] = 1;

System.out.print("Valor 1:"+parafusos[3]);


Faz-se importante destacar que em Java os índices iniciam em 1 não em 0 como em C, JavaScript, PHP ou outras.

Ainda é possível atribuir os valores do Array de outra forma.

parafusos = {12,50,9,1};


Para percorreu um Array seja ele um vetor ou multidimensional, normalmente se usa um for, passando do primeiro ao último, e o índice do Array é a variável contadora do for.

Tipos de dados: Vector

Vector é uma classe (um tipo de dados) assim como o Array, mas tem tamanho flexível, ao criar um não é preciso especificar seu tamanho(embora opcionalmente possa se fazer) e incluir as classes através de um import no código java. No código a seguir onde criamos uma lista de n Strings que são nomes de pessoas.


Diferente do Array, o Vector pode armazenar qualquer tipo de dados, isso porque o Vector não guarda a informação em sí, apenas uma referência (um ponteiro) para onde está essa informação na memória. Dessa forma podemos guaradar qualquer objetos (das nossas classes e das do Java) em um Vector.

Na classe main, criamos um objeto dessa classe (TesteVector). Usamos um tipo de dados Enumeration para percorrer os dados do Vector. O tipo de dados Enumeration possui métodos para percorrer listas, sendo de podemos avançar uma linha com nextElement() e verificar se o "ponteiro" já não está na última linha com hasMoreElements().



No código anterior, não declaramos o tamanho do Vector e adicionamos 4 nomes de pessoas, mas poderíamos adicionar mais. O Vector então se mostra uma boa opção quando estamos trabalhando com dados variáveis, como quando queremos armazenar em memória os dados de retorno de uma consulta SQL, ou leitura de um arquivo texto... sempre que teremos uma "coleção de dados" de tamanho variável.