여기 트릭이 있습니다.
여기 두 가지 예를 들어 보자.
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);
}
}
이제 출력을 보자.
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]
이제 출력을 분석해 봅시다 :
컬렉션에서 3을 제거하면 매개 변수로 사용 remove()
되는 컬렉션 의 메서드를 호출합니다 Object o
. 따라서 객체를 제거합니다 3
. 그러나 arrayList 객체에서는 인덱스 3으로 재정의되므로 4 번째 요소가 제거됩니다.
동일한 객체 제거 논리에 의해 두 번째 출력에서 두 경우 모두 널이 제거됩니다.
따라서 3
객체 인 숫자를 제거하려면 명시 적으로 3을로 전달해야합니다 object
.
래퍼 클래스를 사용하여 캐스팅하거나 래핑하여 수행 할 수 있습니다 Integer
.
예 :
Integer removeIndex = Integer.valueOf("3");
collection.remove(removeIndex);