Aula 4

Listas

Listas ("Arrays") são utilizadas para agrupar objetos do mesmo tipo. O tipo pode ser qualquer tipo primitivo ou qualquer classe de objetos. Para declarar que uma variável representa uma lista, acrescenta-se colchetes após o nome da variável. A lista é criada utilizando-se a palavra-chave new e indicando o número de elementos entre colchetes:

int c[]; // declara uma lista de inteiros
c = new int[ 12 ]; // cria uma lista de 12 inteiros
double d[] = new double[ 30 ]; // combina declaração e criação

No caso de uma lista de tipos primitivos, a lista pode ser criada e inicializada através de uma lista de valores entre chaves:

int b[] = { 3, 5, 7, 9};

O índice especificando um elemento de uma lista é contado a partir de 0. Por exemplo, o comando acima é equivalente ao seguinte:

int b[] = new int[ 4 ];
b[ 0 ] = 3;
b[ 1 ] = 5;
b[ 2 ] = 7;
b[ 3 ] = 9;

No caso de uma lista de objetos, deve-se notar que a criação da lista não cria os objetos. Cria simplesmente uma lista de referências null. Os objetos ainda precisam ser criados e as suas referências atribuidas aos elementos da lista. Por exemplo, o código abaixo cria 3 botões organizados numa lista:

Button ldb[] = new Button[ 3 ];
ldb[ 0 ] = new Button( "Começar" );
ldb[ 1 ] = new Button( "Parar" );
ldb[ 2 ] = new Button( "Zerar" );

Qualquer lista possui uma variável inteira length que fornece o número de elementos da lista. Exemplo de uso desta variável:

for( int i = 0; i < ldb.length; i++)
{
   ldb[ i ].setBackground( Color.blue );
}

Uma lista pode ser passada como argumento a um método. Um exemplo é a lista de argumentos (objetos do tipo String) passados ao método main de um aplicativo independente. Deve-se notar que listas são objetos e, na linguagem Java, objetos são sempre passados aos métodos por referência, ao passo que tipos primitivos são sempre passados por valor. Isto quer dizer que uma modificação à lista realizada no método chamado implicará na mesma modificação à lista definida no programa que chamou o método em questão.

Listas de múltiplos indices podem ser definidas, sendo consideradas como listas de listas. Os seguintes exemplos criam objetos que são essencialmente matrizes:

int b[][];
b = new int[ 2 ][ 3 ];
int c[][] = { { 1, 2, 3 }, { 4, 5, 6} } ;

Porém, listas de listas podem ser mais gerais, pois as "linhas" podem ter tamanhos diferentes:

int b[][];
b = new int[ 2 ][ ];
b[ 0 ] = new int[ 2 ];
b[ 1 ] = new int[ 3 ];
int c[][] = { { 1, 2 }, { 3, 4, 5} } ;

Tópicos de programação orientada a objetos