CodeGym /Blog Jawa /Acak /Daftar Array Jawa
John Squirrels
tingkat
San Francisco

Daftar Array Jawa

Diterbitake ing grup
Hi! Ing pawulangan sadurunge, kita nyilem jero menyang array lan mriksa conto umum nggarap array. Ing wulangan iki, kita bakal nliti maneh babagan Java ArrayList. Umumé, susunan banget praktis. Lan, sing wis ngeweruhi, sampeyan bisa nindakake akeh karo wong-wong mau :) Nanging susunan duwe sawetara shortcomings.
  • ukuran winates. Sampeyan kudu ngerti carane akeh unsur array sampeyan kudu ngemot nalika sampeyan nggawe. Yen sampeyan ngremehake, sampeyan ora bakal duwe papan sing cukup. Overestimate, lan array bakal tetep setengah kosong, sing uga ala. Sawise kabeh, sampeyan isih nyedhiyakake memori luwih akeh tinimbang sing dibutuhake.

  • Array ora duwe cara kanggo nambah unsur. Sampeyan kudu kanthi tegas nuduhake indeks posisi sing pengin ditambahake unsur. Yen sampeyan ora sengaja nemtokake indeks kanggo posisi sing dikuwasani dening sawetara nilai sing sampeyan butuhake, iku bakal ditindhes.

  • Ora ana cara kanggo mbusak item. Nilai mung bisa "nol".

public class Cat {

   private String name;

   public Cat(String name) {
       this.name = name;
   }

   public static void main(String[] args) {

       Cat[] cats = new Cat[3];
       cats[0] = new Cat("Thomas");
       cats[1] = new Cat("Behemoth");
       cats[2] = new Cat("Lionel Messi");

       cats[1] = null;

      
      
       System.out.println(Arrays.toString(cats));
   }

   @Override
   public String toString() {
       return "Cat{" +
               "name='" + name + '\'' +
               '}';
   }
}
Output: [Cat{name='Thomas'}, null, Cat{name='Lionel Messi'}] Untunge, pangripta Jawa ngerti kaluwihan lan kekurangan array, mula nggawe struktur data sing menarik banget sing diarani Java ArrayList . Ngomong kanthi gampang, Java ArrayList minangka array "souped" kanthi akeh fitur anyar.

Cara nggawe ArrayList

Iku gampang banget kanggo nggawe:

ArrayList<Cat> cats = new ArrayList<Cat>();
Saiki kita wis nggawe dhaptar kanggo nyimpen obyek Cat . Elinga yen kita ora nemtokake ukuran ArrayList , amarga bisa nggedhekake kanthi otomatis. Carane iki bisa? Iku cukup prasaja, bener. Sampeyan bisa uga nggumunake, nanging ArrayList ing Jawa dibangun ing ndhuwur array biasa banget :) Ya, ngemot array, lan ing kono unsur disimpen. Nanging ArrayList ing Jawa duwe cara khusus kanggo nggarap array kasebut:
  • Nalika array internal diisi, ArrayList nggawe array anyar sacara internal. Ukuran array anyar yaiku ukuran array lawas kaping 1,5 plus 1.

  • Kabeh data disalin saka larik lawas menyang sing anyar

  • Larik lawas diresiki dening tukang sampah.
Mekanisme iki ngidini Java ArrayList (ora kaya array biasa) kanggo ngleksanakake cara kanggo nambah unsur anyar. Iku add()cara

public static void main(String[] args) {

   ArrayList<Cat> cats = new ArrayList<Cat>();
   cats.add(new Cat("Behemoth"));
}
Item anyar ditambahake ing pungkasan dhaptar. Saiki ora ana risiko ngluwihi array, mula cara iki aman. Miturut cara, ArrayList ora mung bisa nemokake obyek kanthi indeks, nanging uga kosok balene: bisa nggunakake referensi kanggo nemokake indeks obyek ing ArrayList ! Iki minangka cara indexOf () kanggo: Kita ngirim referensi menyang obyek sing dikarepake, lan indexOf () ngasilake indeks kasebut:

public static void main(String[] args) {

   ArrayList<Cat> cats = new ArrayList<>();
   Cat thomas = new Cat("Thomas");
   Cat behemoth = new Cat("Behemoth");
   Cat lionel = new Cat("Lionel Messi");
   Cat fluffy = new Cat ("Fluffy");

   cats.add(thomas);
   cats.add(behemoth);
   cats.add(lionel);
   cats.add(fluffy);

   int thomasIndex = cats.indexOf(thomas);
   System.out.println(thomasIndex);
}
Output: 0 Bener. Objek thomas kita pancen disimpen ing unsur 0. Arrays ora mung duwe kekurangan. Dheweke uga duwe kaluwihan sing ora bisa dipungkiri. Salah sijine yaiku kemampuan kanggo nggoleki unsur kanthi indeks. Amarga kita nuduhake indeks, yaiku alamat memori tartamtu, nggoleki array kanthi cara iki cepet banget. ArrayListngerti carane nindakake iku, banget! Metode get () ngetrapake iki:

public static void main(String[] args) {

   ArrayList<Cat> cats = new ArrayList<>();
   Cat thomas = new Cat("Thomas");
   Cat behemoth = new Cat("Behemoth");
   Cat lionel = new Cat("Lionel Messi");
   Cat fluffy = new Cat ("Fluffy");

   cats.add(thomas);
   cats.add(behemoth);
   cats.add(lionel);
   cats.add(fluffy);

   Cat secondCat = cats.get(1);

   System.out.println(secondCat);
}
Output: Cat{name='Behemoth'} Kajaba iku, sampeyan bisa kanthi gampang ngerteni manawa ArrayList ngemot obyek tartamtu. Iki ditindakake kanthi nggunakake metode ArrayList ngemot ():

public static void main(String[] args) {

   ArrayList<Cat> cats = new ArrayList<>();
   Cat thomas = new Cat("Thomas");
   Cat behemoth = new Cat("Behemoth");
   Cat lionel = new Cat("Lionel Messi");
   Cat fluffy = new Cat ("Fluffy");

   cats.add(thomas);
   cats.add(behemoth);
   cats.add(lionel);
   cats.add(fluffy);

   cats.remove(fluffy);
   System.out.println(cats.contains(fluffy));
}
Cara mriksa apa array internal ArrayList ngemot unsur, lan ngasilake boolean (bener utawa salah). Output: palsu Lan bab penting liyane babagan selipan. ArrayList ngidini sampeyan nggunakake indeks kanggo nglebokake unsur ora mung ing mburi array, nanging ing ngendi wae. Wis rong cara kanggo iki:
  • ArrayList add(int index, Cat element)
  • Set ArrayList (int index, elemen Cat)
Minangka argumentasi, loro cara kasebut njupuk indeks posisi sing pengin dilebokake, lan referensi kanggo obyek kasebut dhewe. Bentenipun punika masang nggunakake set () nimpa nilai lawas. Nglebokake nggunakake nambah () shift pisanan dening siji kabeh unsur saka [indeks] kanggo mburi Uploaded, lan banjur nambah obyek kasebut ing posisi kosong asil.

Iki contone:


public static void main(String[] args) {

   ArrayList<Cat> cats = new ArrayList<>();
   Cat thomas = new Cat("Thomas");
   Cat behemoth = new Cat("Behemoth");
   Cat lionel = new Cat("Lionel Messi");
   Cat fluffy = new Cat ("Fluffy");

   cats.add(thomas);
   cats.add(behemoth);

   System.out.println(cats.toString());

   cats.set(0, lionel);// Now we have a list of 2 cats. Adding a 3rd using set

   System.out.println(cats.toString());
}
Output: [[Cat{name='Thomas'}, Cat{name='Behemoth'}] [Cat{name='Lionel Messi'}, Cat{name='Behemoth'}] Kita duwe dhaptar 2 kucing . Banjur kita masang siji liyane minangka unsur 0 nggunakake set () cara. Akibaté, unsur lawas wis diganti karo anyar.

public static void main(String[] args) {

   ArrayList<Cat> cats = new ArrayList<>();
   Cat thomas = new Cat("Thomas");
   Cat behemoth = new Cat("Behemoth");
   Cat lionel = new Cat("Lionel Messi");
   Cat fluffy = new Cat ("Fluffy");

   cats.add(thomas);
   cats.add(behemoth);

   System.out.println(cats.toString());

   cats.add(0, lionel);// Now we have a list of 2 cats. Adding a 3rd using add

   System.out.println(cats.toString());
}
Lan kene kita waca sing nambah () dianggo beda. Iku mindhah kabeh unsur menyang tengen lan banjur nulis nilai anyar minangka unsur 0. Output: [Cat{name='Thomas'}, Cat{name='Behemoth'}] [Cat{name='Lionel Messi'}, Cat{name='Thomas'}, Cat{name='Behemoth'}] Kanggo mbusak dhaptar kanthi lengkap, kita nggunakake metode clear() :

public static void main(String[] args) {

   ArrayList<Cat> cats = new ArrayList<>();
   Cat thomas = new Cat("Thomas");
   Cat behemoth = new Cat("Behemoth");
   Cat lionel = new Cat("Lionel Messi");
   Cat fluffy = new Cat ("Fluffy");

   cats.add(thomas);
   cats.add(behemoth);
   cats.add(lionel);
   cats.add(fluffy);

   cats.clear();

   System.out.println(cats.toString());
}
Output: [] Kabèh dibusak saka dhaftar. Miturut cara, Wigati dicathet: ora kaya array, ArrayList ngatasi metode toString () lan wis nampilake dhaptar kanthi tepat minangka strings. Kanthi susunan biasa, kita kudu nggunakake kelas Arrays kanggo iki. Lan wiwit aku kasebut Arrays : Jawa ngijini sampeyan gampang "ngalih" antarane array lan ArrayList , IE Ngonversi siji liyane. Kelas Array duwe metode Arrays.asList () kanggo iki. Kita nggunakake aplikasi kasebut kanggo entuk konten minangka array lan ngirim menyang konstruktor ArrayList :

public static void main(String[] args) {

   ArrayList<Cat> cats = new ArrayList<>();


   Cat thomas = new Cat("Thomas");
   Cat behemoth = new Cat("Behemoth");
   Cat lionel = new Cat("Lionel Messi");
   Cat fluffy = new Cat ("Fluffy");

   Cat[] catsArray = {thomas, behemoth, lionel, fluffy};

   ArrayList<Cat> catsList = new ArrayList<>(Arrays.asList(catsArray));
   System.out.println(catsList);
}
Output: [Kucing{name='Thomas'}, Kucing{name='Behemoth'}, Kucing{name='Lionel Messi'}, Kucing{name='Fluffy'}] Sampeyan uga bisa pindhah menyang arah ngelawan: njaluk array saka obyek ArrayList . Kita nindakake iki nggunakake metode toArray() :

public static void main(String[] args) {

   ArrayList<Cat> cats = new ArrayList<>();

   Cat thomas = new Cat("Thomas");
   Cat behemoth = new Cat("Behemoth");
   Cat lionel = new Cat("Lionel Messi");
   Cat fluffy = new Cat ("Fluffy");

   cats.add(thomas);
   cats.add(behemoth);
   cats.add(lionel);
   cats.add(fluffy);

   Cat[] catsArray = cats.toArray(new Cat[0]);

   System.out.println(Arrays.toString(catsArray));
}
Cathetan: kita ngliwati array kosong menyang metode toArray () . Iki dudu kesalahan. Ing kelas ArrayList , metode iki diimplementasikake kanthi cara sing ngliwati array kosong nambah kinerja. Mung elinga iki kanggo masa depan (mesthi, sampeyan bisa ngliwati macem-macem ukuran tartamtu; sing uga bisa digunakake). Oh, babagan ukuran. Ukuran saiki dhaptar bisa ditemokake kanthi nggunakake metode size() :

public static void main(String[] args) {

   ArrayList<Cat> cats = new ArrayList<>();


   Cat thomas = new Cat("Thomas");
   Cat behemoth = new Cat("Behemoth");
   Cat lionel = new Cat("Lionel Messi");
   Cat fluffy = new Cat ("Fluffy");

   cats.add(thomas);
   cats.add(behemoth);
   cats.add(lionel);
   cats.add(fluffy);

   System.out.println(cats.size());
}
Iku penting kanggo ngerti sing ora kaya properti dawa Uploaded , ArrayList.size () cara ngasilake nomer nyata unsur, ora kapasitas asli. Sawise kabeh, kita ora nemtokake ukuran nalika nggawe ArrayList . Nanging, sampeyan bisa nemtokake - ArrayList duwe konstruktor sing cocog. Nanging babagan nambah unsur anyar, iki ora ngganti prilaku:

public static void main(String[] args) {

   ArrayList<Cat> cats = new ArrayList<>(2);// create an ArrayList with an initial capacity of 2


   Cat thomas = new Cat("Thomas");
   Cat behemoth = new Cat("Behemoth");
   Cat lionel = new Cat("Lionel Messi");
   Cat fluffy = new Cat ("Fluffy");

   cats.add(thomas);
   cats.add(behemoth);
   cats.add(lionel);
   cats.add(fluffy);

   System.out.println(cats.size());
}
output Console: 4 Kita wis digawe dhaftar 2 unsur, nanging quietly ditambahi nalika kita needed kanggo. Wawasan liyane yaiku yen kita nggawe dhaptar sing cilik banget ing wiwitan, mesthine kudu luwih kerep, sing bakal nggunakake sawetara sumber daya. Kita meh ora nyentuh babagan proses mbusak unsur saka ArrayList ing pawulangan iki Mesthine, iki ora amarga nggawe pikirane. We wis sijine topik iki dadi pelajaran kapisah sing bakal ditemoni mengko :) Kanggo nguatake apa sing sampeyan sinau, disaranake sampeyan nonton video pelajaran saka Kursus Jawa.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION