นี่คือเคล็ดลับ
ลองมาสองตัวอย่างที่นี่:
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 จะถูกลบออก
ด้วยตรรกะเดียวกันของการลบออบเจ็กต์ null จะถูกลบในทั้งสองกรณีในเอาต์พุตที่สอง
ดังนั้นในการลบจำนวน3
ซึ่งเป็นวัตถุที่เราอย่างชัดเจนจะต้องผ่าน 3 object
ในฐานะที่เป็น
Integer
และที่สามารถทำได้โดยการหล่อหรือห่อใช้คลาสเสื้อคลุม
เช่น:
Integer removeIndex = Integer.valueOf("3");
collection.remove(removeIndex);