Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida sobre método add() de uma ArrayList

A questão faz a seguinte pergunta: O que acontece se você adiciona uma referência na lista sem definir a posição?

A alternativa A afirma: É substituído o último elemento; A alternativa D afirma: O elemento é adicionado no fim da lista (essa é o gabarito da questão);

Minha primeira dúvida é: Qual a diferença entre o último elemento e o fim da lista? Não ficou muito claro isso.

Outra dúvida que tive foi em cima do próprio código passado na aula:

ArrayList lista = new ArrayList();

Conta cc = new ContaCorrente(22, 11);
        lista.add(cc);

Conta cc2 = new ContaCorrente(22, 22);
        lista.add(cc2);

Conta ref = (Conta) lista.get(0); 

Nessa última linha do código, o método get() fez a referência cc ocupar a posição 0 no ArrayList? Porque quando ela foi adicionada pelo método add() não foi passada a posição que ela ocuparia.

Desde já agradeço quem puder ajudar.

2 respostas
solução!

Bom dia Guilherme,

É provavelmente uma pegadinha semântica, você adicionar um elemento no fim do ArrayList não quer dizer que você está substituindo, por exemplo: Você tem o ArrayList de números {1, 3, 5, 7, 9} e adiciona o 11 no fim o resultado ficará {1, 3, 5, 7, 9 ,11} Você tem o mesmo ArrayList e substitui o último elemento por 11 ficará {1, 3, 5, 7, 11}, ou seja, o 9 será expurgado da lista sendo substituído pelo 11.

Essa é a diferença semântica entre as alternativas, o último elemento representa de fato o fim da lista, mas substituir o último elemento e colocar no fim da lista são coisas totalmente diferentes.

Sobre a segunda dúvida, passar o índice para o método add é opcional, se você passar ele irá adicionar no índice que você passar, caso você não passe nada como parâmetro de índice, ou seja, somente o objeto que você quer adicionar, ele será adicionado ao fim da lista (uma vez que o ArrayList é uma lista ordenada, todo objeto que faz parte dessa lista obrigatoriamente precisa ter um índice).

Caso queira entender mais sobre você pode dar uma olhada na documentação do ArrayList: https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html.

Poxa, muito obrigado Danilo, vi a documentação e lembrei que esse array aumenta de tamanho conforme eu adiciono as referências... Por isso faz sentido as referências (ou elementos) serem adicionadas sempre no fim da lista.

Acho que essa confusão aconteceu porque o instrutor falou que um ArrayList sempre é instanciado com cerca de 1000 posições já de início, daí eu fiquei sem entender porque as referências tinham que ocupar a partir do fim da lista.

E provavelmente era um questão de pegadinha semântica mesmo, valeu pela explicação.