Array Dinâmico

Se você trabalha com Arrays em Java, sabe que uma das grandes complicações desta estrutura de dados é ter que definir seus tamanhos. Nem sempre quando você cria sua classe, você já sabe qual o tamanho de vetor que precisará para armazenar seus valores.

Há várias possibilidades para resolver este problema:

 Você pode definir um tamanho muito grande para que o vetor possa armazenar muitos valores. Não é um boa solução, já que ainda assim o vetor poderá ficar cheio.
 Você pode utilizar uma lista. Mas essa é uma solução a ser estudada em outro post.
 Você pode empregar o uso de Array Dinâmico, como você aprenderá a usar neste post.





Imagine um cadastro de uma galinha e seus pintinhos. 
Neste exemplo, usaremos o conceito de Composição (ver post sobre Agregação e Composição).  
Como sabemos que esta galinha poderá ter mais de um pintinho, devemos salvar estas instâncias de pintinho em um vetor.


// Classe Pintinho
class Pintinho{
}
class Galinha{

Pintinho[] filhos = new Pintinho[5];

}

O problema é: Como saber inicialmente, quantos pintinhos esta galinha terá ou qual o limite de pintinhos que cada galinha deve ter?


O tamanho inicial pode ser determinado no construtor desta classe. 
Obviamente, esta classe tem que ter, basicamente, métodos para 
 Inserir um elemento 
 Recuperar um elemento 
 Excluir um elemento 
 Recuperar o número de elementos armazenados 
A jogada está em você monitorar o tamanho do vetor conforme vai-se adicionando ou excluindo elementos. 
Se o método adicionar for invocado, e o vetor interno já tiver cheio, vc cria um novo vetor com o dobro do tamanho, joga os elementos do vetor velho para o novo, adiciona o novo elemento ao vetor novo e "joga fora" o vetor velho. Não vamos entrar no mérito da performance aqui, afinal seu professor pediu apenas um vetor dinâmico
Nenhum comentário

Nenhum comentário :

Postar um comentário