Bem, aqui está o truque.
Vamos dar dois exemplos aqui:
public class ArrayListExample {
public static void main(String[] args) {
Collection<Integer> collection = new ArrayList<>();
List<Integer> arrayList = new ArrayList<>();
collection.add(1);
collection.add(2);
collection.add(3);
collection.add(null);
collection.add(4);
collection.add(null);
System.out.println("Collection" + collection);
arrayList.add(1);
arrayList.add(2);
arrayList.add(3);
arrayList.add(null);
arrayList.add(4);
arrayList.add(null);
System.out.println("ArrayList" + arrayList);
collection.remove(3);
arrayList.remove(3);
System.out.println("");
System.out.println("After Removal of '3' :");
System.out.println("Collection" + collection);
System.out.println("ArrayList" + arrayList);
collection.remove(null);
arrayList.remove(null);
System.out.println("");
System.out.println("After Removal of 'null': ");
System.out.println("Collection" + collection);
System.out.println("ArrayList" + arrayList);
}
}
Agora vamos dar uma olhada na saída:
Collection[1, 2, 3, null, 4, null]
ArrayList[1, 2, 3, null, 4, null]
After Removal of '3' :
Collection[1, 2, null, 4, null]
ArrayList[1, 2, 3, 4, null]
After Removal of 'null':
Collection[1, 2, 4, null]
ArrayList[1, 2, 3, 4]
Agora vamos analisar a saída:
Quando 3 é removido da coleção, ele chama o remove()
método da coleção que toma Object o
como parâmetro. Portanto, ele remove o objeto 3
. Mas no objeto arrayList, ele é substituído pelo índice 3 e, portanto, o quarto elemento é removido.
Pela mesma lógica da remoção de objetos, null é removido nos dois casos na segunda saída.
Portanto, para remover o número 3
que é um objeto, precisaremos explicitamente passar 3 como um object
.
E isso pode ser feito ao transmitir ou agrupar usando a classe wrapper Integer
.
Por exemplo:
Integer removeIndex = Integer.valueOf("3");
collection.remove(removeIndex);