Saya ArrayList
kira list
, dan itu memiliki 8 item AH dan sekarang saya ingin menghapus 1,3,5 posisi Item yang disimpan dalam array int dari list
bagaimana saya bisa melakukan ini.
Saya mencoba melakukan ini dengan
ArrayList<String> list = new ArrayList<String>();
list.add("A");
list.add("B");
list.add("C");
list.add("D");
list.add("E");
list.add("F");
list.add("G");
list.add("H");
int i[] = {1,3,5};
for (int j = 0; j < i.length; j++) {
list.remove(i[j]);
}
Tetapi setelah item pertama dihapus, posisi array diubah dan di iterasi berikutnya menghapus elemen yang salah atau memberikan pengecualian.
List
) menggunakanequals("B")
,equals("D")
danequals("F")
. Pikirkan tentang itu.Jawaban:
Dalam kasus khusus ini , Anda harus menghapus elemen dalam urutan menurun. Indeks pertama
5
, kemudian3
, kemudian1
. Ini akan menghapus elemen dari daftar tanpa efek samping yang tidak diinginkan.sumber
String
s, bukanInteger
s (meskipun demikian, saya setuju dengan pengamatan Anda).ArrayList<E>
- mengapa ada orang yang ingin menghapus objek dariArrayList
murni berdasarkan posisi alih-alih menguji apa yang ada di posisi itu? OP mungkin digunakanString
sebagai tipe objek untukArrayList
tapi jawaban Anda benar-benar praktik pengkodean yang buruk untuk obat generik bahkan jika itu menyelesaikan situasi khusus OP.ArrayList<String>
, bukanArrayList<E>
.Anda dapat menghapus elemen dari
ArrayList
penggunaanListIterator
,sumber
sumber
Seperti yang telah disebutkan sebelumnya
mungkin satu-satunya cara yang aman untuk menghapus item daftar selama pengulangan.
Untuk pemahaman yang lebih dalam tentang penghapusan item menggunakan iterator, coba lihat utas ini
sumber
Saya berasumsi bahwa array i diurutkan naik, berikut adalah solusi lain dengan Iterator, ini lebih umum:
sumber
Bagaimana dengan ini? Pikirkan saja-
Dan hasilnya adalah-
sumber
Coba cara ini,
sumber
sumber
Jika Anda menggunakan "=", replika akan dibuat untuk daftar larik asli di daftar kedua, tetapi referensinya sama jadi jika Anda mengubah satu daftar, daftar lainnya juga akan dimodifikasi. Gunakan ini sebagai ganti "="
sumber
remove (int index) metode dari daftar larik menghapus elemen pada posisi yang ditentukan (indeks) dalam daftar. Setelah menghapus item daftar larik menggeser elemen berikutnya ke kiri.
Berarti jika daftar larik berisi {20,15,30,40}
Saya telah memanggil metode: arraylist.remove (1)
maka data 15 akan dihapus dan 30 & 40 kedua item ini akan dibiarkan bergeser 1.
Untuk alasan ini Anda harus menghapus item indeks yang lebih tinggi dari daftar larik terlebih dahulu.
Jadi..untuk situasi yang diberikan..kodenya akan ..
sumber