Dalam bidang manipulasi data, bekerja dengan struktur data yang kompleks seperti senarai boleh memberikan cabaran yang tidak dijangka. Pertimbangkan senarai integer:
List<Integer> list = new ArrayList<>(); list.add(5); list.add(6); list.add(7); list.add(1);
Laksanakan list.remove(1) dan anda mungkin terkejut dengan hasilnya. Yang mengejutkan, ia mengalih keluar elemen pada indeks 1 (iaitu, 6). Bagaimana pula dengan list.remove(new Integer(1))? Itu menghapuskan kejadian pertama 1.
Nuansa ini boleh membawa kepada pepijat yang membingungkan. Jadi, bagaimanakah kita membezakan antara dua kaedah alih keluar - keluarkan(int index) dan buang(Objek o) - apabila berurusan dengan senarai integer?
Kuncinya terletak pada memahami proses penyelesaian kaedah Java. Auto-tinju dan penyiaran tersirat hanya berlaku jika tiada padanan kaedah yang tepat. Antara muka Senarai mentakrifkan kedua-dua remove(int index) dan remove(Object o), jadi Java akan memilih kaedah yang paling sesuai dengan hujah tanpa sebarang transformasi.
Dalam kes kami, list.remove(1) dipanggil kerana terdapat padanan tepat untuk satu hujah integer. Walau bagaimanapun, list.remove(new Integer(1)) memanggil kaedah remove(Object o) kerana hujah ialah objek Integer.
Oleh itu, untuk mengalih keluar elemen berdasarkan indeksnya, gunakan remove(int index ). Untuk mengalih keluar elemen dengan rujukan, gunakan remove(Object o). Pemahaman ini memastikan kawalan tepat ke atas manipulasi senarai, mencegah tingkah laku yang tidak diingini dan melindungi daripada kemungkinan pepijat.
Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan Perangkap Apabila Mengeluarkan Integer daripada Senarai Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!