1. Menambahkan elemen ke tengah (atau di awal) daftar

Jika kita ingin menyisipkan elemen di tengah daftar, inilah yang terjadi di dalam daftar.

Misalkan kita memiliki daftar 11 elemen:

Menambahkan elemen ke tengah (atau di awal) daftar

Kami ingin memasukkan angka 10.000 ke dalam daftar di indeks 5. Untuk melakukannya, kami hanya perlu menjalankan:

list.add(5, 10000);

Dimana listsebuah ArrayListvariabel. Metode add(int index, type value)menambahkan nilai 10000 pada posisi 5 dalam daftar. Inilah yang terjadi dalam add()metode ini:

Langkah 1: Semua elemen array, mulai dari posisi ke-5, akan digeser (disalin) oleh 1 elemen ke arah akhir array:

Menambahkan elemen ke tengah (atau di awal) daftar 1

Perhatikan bahwa elemen di sel ke-5 dan ke-6 dari array sekarang sama.

Langkah 2: Tulis nilai 10.000 ke dalam sel ke-5:

Menambahkan elemen ke tengah (atau di awal) daftar 2

Sekarang daftar berisi semua elemen array, dan sel kelima berisi angka 10.000. Hanya apa yang kami inginkan.



2. Menghapus elemen dari daftar

Menghapus elemen dari daftar mirip dengan memasukkannya, tetapi prosesnya dibalik.

Mari hapus elemen ke-3 dari daftar. Untuk melakukan ini, kita perlu mengeksekusi:

list.remove(3);

Inilah yang terjadi dalam metode remove() :

Langkah 1: Elemen-elemen array, mulai dari posisi ke-4, akan digeser (disalin) oleh 1 elemen ke awal array:

Menghapus elemen dari daftar

Langkah 2: Nilai variabel sizeakan dikurangi 1.

Menghapus elemen dari daftar 2

Harap perhatikan ada beberapa nilai berwarna abu-abu di akhir larik. Secara teknis, ini adalah sampah. Mereka perlu disingkirkan agar tidak mengganggu pengumpulan sampah .

Langkah 3: Membersihkan sampah

Menghapus elemen dari daftar 3



3. Contoh praktis bekerja dengan daftar di Jawa

Mari tulis beberapa contoh bekerja dengan daftar:

Kami akan mencantumkan semua angka genap dalam rentang dari 1 hingga 20:

Kode Catatan
ArrayList<Integer> list = new ArrayList<Integer>();

for (int i = 1; i <= 20; i++)
   if (i%2 == 0)
      list.add(i);
Buat objek daftar

Ulangi semua indeks 1ke 20
Jika indeks habis dibagi 2tanpa sisa,
tambahkan ke daftar

Sekarang mari tampilkan semua elemen daftar di layar:

Kode Catatan
ArrayList<Integer> list = new ArrayList<Integer>();

for (int i = 1; i <= 20; i++)
   if (i%2 == 0)
      list.add(i);

for (int i = 0; i < list.size(); i++)
   System.out.println(list.get(i));
Buat objek daftar
Ulangi semua indeks 1ke 20

Jika bilangan habis dibagi 2tanpa sisa,
tambahkan ke daftar

Ulangi dari nol hingga ukuran daftar
Tampilkan setiap elemen di layar

Menghapus elemen:

Sekarang mari kita hapus semua elemen yang habis dibagi 4. Perhatikan bahwa setelah menghapus elemen dari daftar, posisi elemen yang tersisa segera berubah.

Kode Catatan
ArrayList<Integer> list = new ArrayList<Integer>();

for (int i = 1; i <= 20; i++)
   if (i%2 == 0)
      list.add(i);

for (int i = 0; i < list.size(); i++)
   if (list.get(i)%4 == 0)
   {
      list.remove(i);
      i--;
   }
Buat objek daftar

Ulangi semua indeks 1ke 20
Jika indeks habis dibagi 2tanpa sisa,
tambahkan ke daftar

Ulangi dari nol ke ukuran daftar
Jika elemen daftar habis dibagi 4tanpa sisa:

a) hapus elemen
b) kurangi ipenghitung sehingga kami mendapatkan indeks yang sama pada iterasi berikutnya dari loop

Katakanlah Anda perlu menghapus 3 elemen terakhir dari daftar.

Inilah cara melakukannya dengan tidak benar:

Kode Catatan
ArrayList<Integer> list = new ArrayList<Integer>();

for (int i = 1; i <= 20; i++)
   if (i%2 == 0)
      list.add(i);

int n = list.size();
list.remove(n - 3);
list.remove(n - 2);
list.remove(n - 1);
Buat objek daftar

Daftar memiliki 10 elemen: 2, 4, 6, ... 20



n = 10
n - 3 = 7(ada 9 elemen tersisa dalam daftar)
n - 2 = 8(ada 8 elemen tersisa dalam daftar)
n - 1 = 9(ada 7 elemen tersisa dalam daftar)

Setelah menghapus elemen ke-7 dan ke-8, hanya 8 elemen yang tersisa dalam daftar. Itu berarti tidak mungkin untuk menghapus elemen ke-9 — kesalahan akan terjadi pada program.

Inilah cara yang tepat untuk menghapus elemen:

Pilihan 1 pilihan 2
int n = list.size();
list.remove(n - 3);
list.remove(n - 3);
list.remove(n - 3);
int n = list.size();
list.remove(n - 1);
list.remove(n - 2);
list.remove(n - 3);

Elemen harus dihapus baik dari ujung atau dari lokasi lain yang konsisten, karena elemen digeser satu per satu setelah setiap operasi penghapusan.