Aula 09 - Listas e ArrayList

Listas na nossa aplicação
O que temos até agora?
  • Nós criamos a Classe Pessoa
  • Nós criamos a Classe Livro
  • Nós estabelecemos uma ligação entre estas Classes criando um campo pessoa na Classe Livro
Agora vamos juntar tudo isso e começar a pensar na nossa Classe Biblioteca.
Mas o que gostaríamos que a Classe Biblioteca fizesse?
  • Listar os livros que possuímos
  • Listar as pessoas que pegaram nossos livros emprestados
  • Listar quantos livros e pessoas existem no nosso grupo?
Num primeiro momento podemos estimar a nossa Biblioteca comunitária em cerca de 50 pessoas e 100 livros. Mas é difícil de garantir. Vamos supor que um amigo entre no grupo e que apenas ele disponha de 200 livros. Lá se vai a nossa média por água a baixo.
O ideal portanto, é que o nosso programa possa lidar com um número ilimitado de livros e pessoas.
Não por acaso, a linguagem Java possui algumas Classes criadas para lidar com listas. Nós vamos usar uma delas chamada: ArrayList.

Características de um ArrayList
  • Pode lidar com um número qualquer de Objetos numa lista
  • Possui métodos já construídos para gerenciar a lista
Vamos voltar a usar o Scrapbook para nos familiarizar com a Classe ArrayList.
Abrindo o Scrapbook, se existir algum código anterior, podemos excluí-lo:
A Classe ArrayList está no pacote "java.util". Portanto, a primeira coisa a fazer é: importar este pacote para o Scrapbook:
Na janela que se abre...
Em seguida:
E na sequência:
O fato de importar o pacote "java.util", significa que podemos digitar simplesmente "ArrayList" em vez de "java.util.ArrayList" no nosso código.
O nosso próximo passo, vai ser criar um ArrayList. Fazemos isso usando o comando "new" que a essa altura já conhecemos. sempre usando os facilitadores do Eclipse.
Sobre este assunto, cabe aqui uma dica. Aparentemente, nas versões mais recentes do Eclipse, o assistente de código não está funcionando para o comando "new" no Scrapbook. Para solucionar este problema, siga os seguintes passos: Window » Preferences » Java » Editor » Templates. Localize o item "new", assim:
Edite este template e altere o contexto de "Java statements" para "java".
Clique "OK".
E "OK" novamente.
Isso deve fazer funcionar o "code complete" para o comando new no Scrapbook.
Começamos criando uma lista vazia, assim:
Onde o construtor "<String>", define para o compilador que a nossa lista só vai poder conter Objetos do ipo String. Se tentarmos colocar qualquer outro tipo de Objeto na lista, vamos receber um erro de compilação. Caso não especificado este construtor, a lista dará suporte a qualquer tipo de Objeto Java. Mas esta não é a forma mais comum de uso.
Vamos agora adicionar elementos na nossa lista usando o método "add", assim:
E verificar o resultado com o "Inspect", assim:
Convém ressaltar que os índices das listas em Java começam com 0 (zero).
A título de aprendizado, vamos tentar adicionar um Objeto do tipo inteiro à nossa lista.
Resultando em um erro, assim:

Aplicando a Classe ArrayList
Agora que já estamos familiarizados com a Classe ArrayList, vamos usá-la tratar os nossos livros e pessoas.
Vamos começar com a Classe Livro, assim:
Inspecionando, vamos ver os livros na nossa lista:
Seguindo adiante, vamos criar uma pessoa e associar esta pessoa a um dos livros:
Mais uma vez, inspecionando vemos que agora existe uma pessoa associada ao livro l1:
Podemos observar aqui, a hierarquia dos Objetos envolvidos: A nossa lista (ArrayList), contém l1 (Livro) que por sua vez contém p1 (Pessoa).
Agora, vamos ver mais detalhadamente alguns outros métodos da Classe ArrayList.
Localizando um elemento (o primeiro) da lista:
Inspecionando, vamos obter o Objeto livro esperado:
Usando a hierarquia vista anteriormente, podemos obter a pessoa associada diretamente do Objeto livro recuperado:
E assim:
Seguindo usando o mesmo princípio, já que obtivemos um Objeto do tipo Pessoa, podemos recuperar o nome da pessoa diretamente dele, assim:
Inspecionando, teremos um String com o nome da pessoa:
Portanto, nesta linha de código:
      lista.get(0).getPessoa().getNome()
      
  • lista.get(0) - retorna o livro l1
  • getPessoa() - retorna a pessoa p1
  • getNome() - retorna o String com o nome da pessoa p1
Vamos agora localizar um determinado livro na lista, usando o método "indexOf":
O que vai nos retornar a localização do Objeto l2 na lista:
Sendo ele o segundo elemento da lista (índice igual a 1), lembrando que o primeiro elemento da lista possui índice igual a 0 (zero).
Resumindo: se sabemos o índice, podemos obter o Objeto. Se sabemos o Objeto, podemos obter o índice.
Isso também se aplica ao uso do método "remove".
Vamos usá-lo para remover o Objeto l1 da lista:
Inspecionando, podemos ver que a nossa lista agora possui apenas um Objeto do tipo Livro, e que ele não é l1 e sim o l2, pois o l1 acabou de ser removido:
Agora que sabemos como inserir, localizar e excluir elementos de uma lista, podemos começar a usar estas listas nas nossas aplicações. É o que vamos fazer na próxima aula.

Nenhum comentário:

Postar um comentário