CodeGym /Blog Jawa /Acak /ArrayList ing gambar
John Squirrels
tingkat
San Francisco

ArrayList ing gambar

Diterbitake ing grup
Hi! Pelajaran dina iki ArrayListbakal luwih gampang lan luwih angel tinimbang pelajaran sadurunge.
ArrayList ing gambar - 1
Bakal luwih angel amarga dina iki kita bakal nliti ArrayListlan nyinaoni apa sing kedadeyan sajrone macem-macem operasi. Ing sisih liya, pelajaran iki meh ora ana kode. Iku biasane gambar lan panjelasan. Inggih, ayo kang pindhah :) Kaya sing wis ngerti, ArrayListwis Uploaded biasa nang, kang tumindak minangka nyimpen data. Umume kasus, kita ora nemtokake ukuran dhaptar sing pas. Nanging array internal kudu sawetara ukuran! Lan mengkono iku. Ukuran standar yaiku 10 .

public static void main(String[] args) {
   ArrayList<Car> cars = new ArrayList<>();
}
ArrayList ing gambar - 2 Pisanan, ayo ndeleng kepiye nambah unsur anyar. Urutan bisnis pisanan yaiku mriksa apa array internal duwe ruang sing cukup ing array internal lan manawa ana unsur liyane sing cocog. Yen ana spasi, banjur unsur anyar ditambahake ing mburi dhaftar. Nalika kita ngomong "nganti pungkasan", kita ora ateges posisi pungkasan ing array (sing bakal aneh). We tegese posisi sawise unsur saiki pungkasan. Indeks kasebut bakal dadi cars.size(). Daftar kita saiki kosong ( cars.size() == 0). Mulane, unsur anyar bakal ditambahake ing posisi 0.

ArrayList<Car> cars = new ArrayList<>();
Car ferrari = new Car("Ferrari 360 Spider");
cars.add(ferrari);
ArrayList ing gambar - 3 Iku cukup cetha. Apa mengkono yen kita masang ing tengah, IE antarane unsur liyane?

public static void main(String[] args) {
   ArrayList<Car> cars = new ArrayList<>();
   Car ferrari = new Car("Ferrari 360 Spider");
   Car bugatti = new Car("Bugatti Veyron");
   Car lambo = new Car("Lamborghini Diablo");
   Car ford = new Car("Ford Modneo");
  
   cars.add(ferrari);
   cars.add(bugatti);
   cars.add(lambo);
  
   cars.add(1, ford);// add ford to cell 1, which is already occupied
}
Maneh, pisanan ana mriksa apa ana cukup spasi ing Uploaded. Yen ana papan sing cukup, unsur kasebut digeser nengen , diwiwiti kanthi posisi ing ngendi kita nglebokake unsur anyar. Kita nglebokake ing posisi 1. Ing tembung liyane, unsur saka posisi 3 disalin menyang posisi 4, unsur 2 kanggo posisi 3, lan unsur 1 kanggo posisi 2. ArrayList ing gambar - 4 Banjur unsur anyar kita dipasang ing sawijining panggonan. Unsur sadurunge (bugatti) wis disalin saka ing kono menyang posisi anyar. ArrayList ing gambar - 5 Saiki ayo goleki carane proses iki kedadeyan yen ora ana papan kanggo nglebokake unsur anyar menyang array. ArrayList ing gambar - 6 Mesthi, ana mriksa dhisik kanggo ndeleng apa ana cukup ruang. Yen ora ana cukup ruang, banjur array anyar digawe ingArrayListsing ukuran ukuran array lawas kaping 1,5 plus 1 Ing kasus kita, ukuran Uploaded anyar bakal 16. Kabeh unsur saiki bakal disalin menyang ana langsung. ArrayList ing gambar - 7 Larik lawas bakal dibusak dening kolektor uwuh, lan mung anyar, Uploaded ditambahi bakal tetep. Saiki ana ruang kanggo unsur anyar. Kita nglebokake ing posisi 3, sing dikuwasani. Saiki prosedur akrab diwiwiti. Kabeh unsur, diwiwiti kanthi indeks 3, dipindhah siji posisi menyang sisih tengen, lan unsur anyar ditambahake kanthi tenang. ArrayList ing gambar - 8 Lan sisipan wis rampung! Lan kita wis rampung karo selipan. Saiki ayo ngomong babagan mbusak item . Sampeyan bakal ngelingi yen kita ngalami masalah nalika nggarap array: mbusak unsur ndadekake "bolongan" ing array.karo saben aman, lan kita kudu nulis kode dhewe saben wektu kanggo nindakake shift iki. ArrayList ngetutake prinsip sing padha, nanging wis ngetrapake mekanisme iki. ArrayList ing gambar - 9 Iki carane katon: ArrayList ing gambar - 10 Lan ing pungkasan kita njaluk apa kita arep: ArrayList ing gambar - 11 Unsur lambowis dibusak. Kene kita mbusak unsur saka tengah. Cetha, mbusak unsur saka mburi dhaftar luwih cepet, amarga unsur mung dibusak tanpa perlu kanggo ngganti kabeh liyane. Ayo dadi pirembagan maneh kanggo wayahe bab dimensi saka Uploaded internal lan carane iku disusun ing memori. Ngembangake array mbutuhake sawetara sumber daya. Mulane, aja nggaweArrayListkanthi ukuran standar yen sampeyan yakin bakal duwe paling ora 100 unsur. Array internal kudu ditambahi kaping 6 nalika sampeyan nglebokake unsur kaping 100, lan kabeh unsur kudu diganti saben wektu.
  • saka 10 unsur nganti 16
  • saka 16 unsur nganti 25
  • saka 25 kanggo 38
  • saka 38 nganti 58
  • 58 nganti 88
  • saka 88 nganti 133 (yaiku ukuran array lawas kaping 1,5 plus 1)
Minangka sampeyan bisa mbayangno, iki cukup akeh sumber daya. Dadi, yen sampeyan wis ngerti (malah kira-kira) jumlah item sing dibutuhake, luwih becik nggawe dhaptar kanthi macem-macem ukuran tartamtu:

ArrayList<Car> cars = new ArrayList<>(100);
Saiki memori kanggo array 100 unsur bakal diparengake bebarengan, nggawe array luwih efisien (ora perlu ditambahi). Strategi iki uga duwe sisih flip. Nalika mbusak obyek saka ArrayList, ukuran array internal ora suda kanthi otomatis. Upaminipun kita duwe ArrayListkaro Uploaded lengkap internal 88 unsur: ArrayList ing gambar - 12 Nalika program mlaku, kita mbusak 77 unsur, supaya mung 11 tetep: ArrayList ing gambar - 13 Apa sampeyan wis guessed apa masalahe? Sampeyan entuk, panggunaan memori sing ora efisien! Kita mung nggunakake 11 posisi kene, nanging kita wis diparengake memori kanggo 88 unsur. Iku 8 kaping luwih saka kita perlu! Ing kasus iki, kita bisa ngoptimalake panggunaan memori kanthi salah sawijining ArrayListmetode khusus kelas:trimToSize(). Cara iki "trims" dawa array internal mudhun kanggo jumlah unsur saiki disimpen ing. ArrayList ing gambar - 14 Saiki kita mung nyedhiyakake memori sing dibutuhake! :)
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION