1. Carane ArrayListwis kabentuk

ArrayListyaiku kelas Jawa sing paling umum digunakake kanggo nyimpen unsur. Dadi kepiye ArrayListkerjane lan kenapa kabeh wong seneng banget?

Struktur punika ArrayListprasaja lan akale. Saben ArrayListobyek ngemot rong kolom:

  • Array saka unsur
  • Variabel size, sing nyimpen jumlah unsur ing dhaptar

Secara internal, ArrayListobyek ngemot array sing paling biasa! Nanging ora mung kuwi. Ana uga variabel ukuran , sing nyimpen dawa dhaptar. Iki cara kerjane:

Kaping pisanan, dawa array ing dhaptar yaiku 10. Lan sizevariabel kasebut 0.

Yen sampeyan nambahake unsur menyang dhaptar, bakal disimpen ing sel kaping 0 saka array, lan sizebakal nambah dadi 1.

Yen sampeyan nambah siji unsur liyane, bakal disimpen ing sel 1, lan sizemaneh bakal nambah 1 lan dadi padha karo loro.

Yen sampeyan nambahake unsur liyane nalika ora ana spasi liyane ing array, banjur ing ngisor iki kelakon ing add()cara:

  1. A array anyar digawe sing siji lan setengah kaping dawa saka sadurunge
  2. Kabeh unsur array lawas disalin menyang array anyar.
  3. Ing ArrayListobyek kasebut, referensi menyang array anyar ngganti referensi menyang sing lawas .
  4. Unsur liwati disimpen ing sel kaping 10 saka array anyar.
  5. Variabel ukuran mundhak 1 lan saiki bakal padha karo 11

Ana kedadeyan sing padha nalika nambah (nyisipake) unsur ing tengah dhaptar. Unsur sing ana dipindhah 1 menyang sisih tengen, lan unsur sing dilewati ditulis menyang sel sing mentas dibebasake saka array.

Saiki kita bakal nimbang skenario paling dhasar sing kalebu dhaptar:


2. Nambahake unsur menyangArrayList

Ayo goleki apa sing kedadeyan ing dhaptar nalika unsur ditambahake. Sanalika sawise obyek ArrayList digawe, kita duwe memori kaya iki:

Nambahake unsur menyang ArrayList

Kita duwe ArrayListobyek sing ngemot rong kolom (rong variabel): wadhah (array data) lan jumlah unsur sing disimpen ( size). Variabel datanyimpen referensi kanggo wadhah (array) sing bisa nyimpen 10 unsur.

Yen kita mutusake kanggo nambah nomer 5 menyang larik, kita entuk gambar ing ngisor iki:

Nambahake unsur menyang ArrayList 2

Array saiki nyimpen unsur 5, lan size == 1.

Yen wong nelpon size()cara ing ArrayListobyek kita saiki, Nilai bali bakal nomer unsur disimpen ing dhaftar: 1. Jumlah unsur ing dhaftar ora padha karo kapasitas panyimpenan saka Uploaded.

Kapasitas panyimpenan saiki utawa array dhewe ora bakal bisa diakses (katon) ing njaba ArrayListobyek kasebut. Iki lan mesthi bakal dadi ArrayListdata internal.

Ayo ditambahake 7 nomer liyane ing dhaptar: 10, 20, 30, 40, 50, 60, 70.

Saiki memori bakal katon kaya iki:

Nambahake unsur menyang ArrayList

Yen sampeyan nelpon size()cara saiki, bakal ngasilake nomer 8, yaiku nomer unsur anyar ing dhaptar. Nilai iki ora ana hubungane karo ukuran array internal.

penting:

Ana siji oversimplification ing gambar iki.

Kelas kasebut ArrayListora bisa nyimpen jinis primitif, mula nggunakake Integerjinis kasebut tinimbang int. Wadhah kasebut ora langsung nyimpen nilai {5, 10, 20, 30, 40, 50, 60, 70}, nanging referensi kanggo Integerobyek. Kabeh sel kosong ing toko wadhah null.



3. Nambah dawa dhaftar

Ayo goleki apa sing kedadeyan ing dhaptar nalika ora ana sel kosong ing array internal.

Upaminipun kita duwe dhaptar 10 unsur:

Nambah dawa dhaptar

Kita mutusake kanggo nambah nomer 100 kasebut. Iki kedadeyan ing add()metode:

Langkah 1 - Nggawe larik anyar:

Nambah dawa dhaptar 2

Langkah 2 - Nyalin kabeh unsur saka larik lawas menyang sing anyar:

Nambah dawa dhaptar 2

Langkah 3 - Ganti array lawas (ganti referensi menyang ArrayListarray internal obyek):

Nambah dawa dhaptar 3

Langkah 4 - Tambah nomer anyar, sing wis kerja keras kanggo ngrampungake:

Nambah dawa dhaptar 4