CodeGym /Cursos /All lectures for PT purposes /Trabalhando com ArrayList Parte 2

Trabalhando com ArrayList Parte 2

All lectures for PT purposes
Nível 1, Lição 527
Disponível

1. Adicionando um elemento no meio (ou no início) de uma lista

Se quisermos inserir um elemento no meio da lista, eis o que acontece dentro da lista.

Suponha que temos uma lista de 11 elementos:

Adicionando um elemento no meio (ou no início) de uma lista

Queremos inserir o número 10.000 na lista de índice 5. Para isso, basta executar:

list.add(5, 10000);

Onde listé uma ArrayListvariável. O add(int index, type value)método adiciona o valor 10000 na posição 5 da lista. Aqui está o que acontece no add()método:

Etapa 1: Todos os elementos da matriz, começando na 5ª posição, serão deslocados (copiados) por 1 elemento no final da matriz:

Adicionando um elemento no meio (ou no início) de uma lista 1

Observe que os elementos na 5ª e 6ª célula da matriz agora são os mesmos.

Passo 2: Escreva o valor 10.000 na 5ª célula:

Adicionando um elemento no meio (ou no início) de uma lista 2

Agora a lista contém todos os elementos da matriz e a quinta célula contém o número 10.000. Exatamente o que queríamos.



2. Removendo um elemento de uma lista

Remover um elemento de uma lista é semelhante a inseri-lo, mas o processo é inverso.

Vamos remover o terceiro elemento de uma lista. Para isso, precisamos executar:

list.remove(3);

Aqui está o que acontece no método remove():

Passo 1: Os elementos do array, a partir da 4ª posição, serão deslocados (copiados) por 1 elemento em direção ao início do array:

Removendo um elemento de uma lista

Passo 2: O valor da sizevariável será diminuído em 1.

Removendo um elemento de uma lista 2

Observe que existem alguns valores em cinza no final da matriz. Tecnicamente, estes são lixo. Eles precisam ser removidos para não interferir na coleta de lixo .

Passo 3: Limpando o lixo

Removendo um elemento de uma lista 3



3. Exemplos práticos de como trabalhar com uma lista em Java

Vamos escrever alguns exemplos de como trabalhar com listas:

Vamos listar todos os números pares no intervalo de 1 a 20:

Código Notas
ArrayList<Integer> list = new ArrayList<Integer>();

for (int i = 1; i <= 20; i++)
   if (i%2 == 0)
      list.add(i);
Criar um objeto de lista

Percorrer todos os índices 1até 20
Se o índice for divisível por 2sem resto,
adicioná-lo à lista

Agora vamos exibir todos os elementos da lista na tela:

Código Notas
ArrayList<Integer> list = new ArrayList<Integer>();

for (int i = 1; i <= 20; i++)
   if (i%2 == 0)
      list.add(i);

for (int i = 0; i < list.size(); i++)
   System.out.println(list.get(i));
Criar um objeto de lista
Percorrer todos os índices 1até 20

Se o número for divisível por 2sem resto,
adicioná-lo à lista

Percorrer de zero até o tamanho da lista
Exibir cada elemento na tela

Removendo elementos:

Agora vamos remover todos os elementos que são divisíveis por 4. Observe que após remover um elemento da lista, as posições dos elementos restantes mudam imediatamente.

Código Notas
ArrayList<Integer> list = new ArrayList<Integer>();

for (int i = 1; i <= 20; i++)
   if (i%2 == 0)
      list.add(i);

for (int i = 0; i < list.size(); i++)
   if (list.get(i)%4 == 0)
   {
      list.remove(i);
      i--;
   }
Criar um objeto de lista

Percorrer todos os índices 1até 20
Se o índice for divisível por 2sem resto,
adicioná-lo à lista

Percorrer de zero até o tamanho da lista
Se um elemento da lista for divisível por 4sem resto:

a) remover o elemento
b) diminua o icontador para obtermos o mesmo índice na próxima iteração do loop

Existe um jeito mais simples: percorrer a lista a partir do final com for (int i = list.size() - 1; i >= 0; i--). Assim, o deslocamento dos índices não atrapalha e i-- no corpo do loop não é necessário. Você também pode usar o método removeIf(), que já conhece: list.removeIf(x -> x % 4 == 0);

Digamos que você precise remover os últimos 3 elementos de uma lista.

Veja como fazer isso incorretamente:

Código Notas
ArrayList<Integer> list = new ArrayList<Integer>();

for (int i = 1; i <= 20; i++)
   if (i%2 == 0)
      list.add(i);

int n = list.size();
list.remove(n - 3);
list.remove(n - 2);
list.remove(n - 1);
Criar um objeto de lista

A lista tem 10 elementos: 2, 4, 6, ... 20



n = 10
n - 3 = 7(restam 9 elementos na lista)
n - 2 = 8(restam 8 elementos na lista)
n - 1 = 9(restam 7 elementos na lista)

Depois de remover o 7º e 8º elementos, apenas 8 elementos permanecerão na lista. Isso significa que não será possível excluir o 9º elemento — ocorrerá um erro no programa.

Aqui está a maneira correta de remover os elementos:

Opção 1 opção 2
int n = list.size();
list.remove(n - 3);
list.remove(n - 3);
list.remove(n - 3);
int n = list.size();
list.remove(n - 1);
list.remove(n - 2);
list.remove(n - 3);

Os elementos precisam ser removidos da extremidade ou de outro local consistente, pois os elementos são deslocados um após cada operação de remoção.


Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION