O problema com os arrays é que eles são de comprimento fixo. Se estiver cheio, você não pode adicionar mais elementos a ele.
Da mesma forma se houver um número de elementos removidos, o consumo de memória seria o mesmo que não encolher.
Por outro lado, o java.utilArrayList pode crescer e diminuir dinamicamente após a adição e remoção de elementos.
Além desses benefícios, a classe java.utilArrayList nos permite usar métodos pré-definidos que facilitam nossa tarefa. Por exemplo implementar critérios de ordenação com poucas linhas de código.
Na figura abaixo exemplo do encapsulamento de uma classe java.utilArrayList. A classe encapsula o controle para adicionar, remover e recuperar o numero de contatos.
No examplo abaixo, a classe PessoaController usa a estratégia de overload nos métodos addContato e removeContato. Como pode-se observar o nome do métodos é o mesmo. Entretanto a assinatura do mesmo é distinta (tipo do parâmetro).
A classe java.util.ArrayList tem métodos para:
Crie um programa para gerenciar um restaurante. O programa deve permitir cadastrar as mesas que estão ocupadas por clientes.
Cada mesa deve ter as seguintes informações: número, nome do cliente, e uma lista dos itens pedidos.
O pedido deve ter o nome do produto e o valor.
Crie programa principal (PSVM) para controlar o funcionamento do sistema. Armazene as mesas ocupadas em uma lista.
Cada cliente que chega, adicione uma nova mesa na lista. Cada cliente que sai, remova a mesa da lista.
O valor da conta da mesa removida deve ser acumulada numa variável “faturamento”, para saber quando foi apurado no dia.
Crie os métodos e construtores necessários para o funcionamento do sistema.
Classe Mesa
– numero : int
– cliente : String
– pedidos : java.util.ArrayList<Pedido>
Classe Pedido
– nome: String
– valor: double
Restaurante (PSVM / JInput..)
– mesas : java.util.ArrayList<Mesa>
– faturamento : double