Olá Lucas,
Para melhorar a implementação desse método, caso o elemento removido não seja o último, poderia deslocar os objetos no array, a fim de eliminar o "buraco".
Se deixar buracos no array interno, vc pode ter problemas para pegar elementos nela. Por exemplo, vamos supor que sua lista tenha:
lista.pegaReferencia(0) // Conta 1
lista.pegaReferencia(1) // Conta 2
lista.pegaReferencia(2) // Conta 3
lista.pegaReferencia(3) // Conta 4
lista.pegaReferencia(4) // Conta 5
lista.getTamanho() // 5
Quando chamar lista.tiraReferencia(2)
, sua lista ficará assim:
lista.pegaReferencia(0) // Conta 1
lista.pegaReferencia(1) // Conta 2
lista.pegaReferencia(2) // null
lista.pegaReferencia(3) // Conta 4
lista.pegaReferencia(4) // Conta 5
lista.getTamanho() // 4
Veja que o getTamanho ficará correto, pois vc decrementou o atributo posicaoLivre
, porém ao chamar lista.pegaReferencia(2)
, seu retorno será null
. Não é bem isso que se espera após remover o elemento da segunda posição. Costumamos esperar que o terceiro ocupe sua posição. Afinal, não sabemos quais posições no meio da lista podem estar vazias.
O ideal é que sua implementação desloque os elementos das posições 3 e 4, removendo o buraco.
Após a chamada lista.tiraReferencia(2)
, sua lista deveria ficar do seguinte modo:
lista.pegaReferencia(0) // Conta 1
lista.pegaReferencia(1) // Conta 2
lista.pegaReferencia(2) // Conta 4
lista.pegaReferencia(3) // Conta 5
lista.getTamanho() // 4
Esse é um exercício bacana. Tente fazer esse esquema do deslocamento.
Se tiver alguma dúvida a mais ou sobre algo que eu coloquei aqui, manda a pergunta aí em baixo.
Abs