1. ArrayListkelas

Dina iki kita bakal njelajah ArrayListkelas. Iki minangka kelas pisanan saka sawetara kelas sing dikenal minangka koleksi . Ing Jawa, koleksi minangka topik sing wiyar lan migunani sing kabeh nggoleki CodeGym dikhususake kanggo dheweke.

Kanggo ngerti kanthi lengkap carane koleksi disusun lan kabeh nuansa, sampeyan kudu sinau OOP, antarmuka, warisan, dhasar multithreading, lan liya-liyane.

Dadi dina iki kita bakal kenal karo koleksi sing paling gampang. Nanging ing tingkat sing cukup jero supaya sampeyan ngerti carane nggunakake lan cara kerjane. Saiki, ketemu ArrayListkoleksi .

Latar mburi

Aku bakal miwiti karo latar mburi sethitik. Programer pancen ora seneng karo siji aspek array: nyatane ukurane ora bisa diganti. Apa yen sampeyan kudu nyimpen telung unsur liyane ing array, nanging mung ana siji sel kosong?

Siji-sijine solusi kanggo watesan ruang array yaiku nggawe array sing gedhe banget supaya bisa nampung kabeh unsur sing kudu disimpen. Nanging iki biasane sampah memori. Yen larik biasane ngemot loro utawa telung unsur, nanging ana kemungkinan cilik yen kudu nyimpen 100, mula kudu nggawe larik kanthi kapasitas kanggo nyimpen 100.

Dadi apa sing digawe programer? Dheweke nulis ArrayListkelas, sing nindakake pakaryan sing padha karo Arraykelas kasebut, nanging bisa diowahi ukurane.

Kelas ArrayList

Jeneng kelas kasebut ArrayListdumadi saka rong tembung: Array + List. Arrayiku array lan Listdhaftar.

Saben ArrayListobyek ngemot macem-macem unsur biasa. Nalika sampeyan maca unsur saka ArrayList, obyek njupuk saka array internal. Nalika sampeyan nulis unsur, iku nulis menyang Uploaded internal.

Kelas ArrayList ora duwe kabeh kekurangan sing ana ing array. Iku ngerti carane:

  • Simpen unsur saka jinis tartamtu
  • Ngowahi ukuran dhaptar kanthi dinamis
  • Tambah unsur ing mburi dhaftar
  • Lebokake unsur ing wiwitan utawa tengah dhaptar
  • Mbusak unsur saka ngendi wae ing dhaptar

Kanggo rincian liyane, deleng ing ngisor iki:


2. Nggawe ArrayListobyek

Kanggo nggawe ArrayListobyek, sampeyan kudu nulis kode kaya iki:

ArrayList<TypeParameter> name = new ArrayList<TypeParameter>();

Ing endi ArrayListjinis koleksi / kelas, TypeParameteryaiku jinis unsur sing disimpen ing ArrayListkoleksi, lan namejeneng ArrayList<TypeParameter>variabel.

Variabel kasebut namenduweni jinis umum. Iki kalebu rong jinis: jinis koleksi dituduhake dhisik, banjur kurung sudut digunakake kanggo nuduhake jinis unsur sing disimpen ing koleksi kasebut.

Tuladha:

Kode Katrangan
ArrayList<Integer> list = new ArrayList<Integer>();
Dhaptar integer
ArrayList<String> list = new ArrayList<String>();
Dhaptar senar
ArrayList<Double> list = new ArrayList<Double>();
Dhaptar nomer nyata

Ora kaya array, koleksi ora bisa nyimpen jinis primitif, mung jinis referensi . Dadi yen sampeyan perlu koleksi ints, nggunakake Integerkelas pambungkus tinimbang.


3. Operasi karoArrayList

Kaping pisanan, dawa dhaptar sing mentas digawe nol, amarga ngemot 0 unsur. Yen sampeyan nambah siji unsur kanggo dhaftar, dawane mundhak 1. Yen sampeyan mbusak unsur ditambahake, dawa sudo bali menyang nul.

Tabel ing ngisor iki bisa mulang sampeyan luwih akeh babagan metode kelas ArrayList:

Metode Katrangan
void add(Type value)
Nambahake unsur liwati menyang dhaptar
void add(int index, Type value)
Nambahake unsur menyang lokasi tartamtu ing dhaptar.
Type get(int index)
Ngasilake unsur sing indeks kasebutindex
void set(int index, Type value)
Nemtokake valueunsur sing indeks kasebutindex
Type remove(int index)
Mbusak unsur sing indeks index. Ngasilake unsur dibusak.
Type remove(Type value)
Mbusak unsur sing sampeyan pass menyang cara. Yen ana luwih saka siji unsur kasebut, sing pisanan bakal dibusak.
void clear()
Mbusak dhaptar, yaiku mbusak kabeh unsur saka dhaptar.
boolean contains(Type value)
Priksa manawa dhaptar kasebut ngemot value.
boolean isEmpty()
Priksa manawa dhaptar kasebut kosong utawa ora. Ing tembung liyane, apa dawa dhaftar punika nul.
int size()
Ngasilake ukuran dhaptar, yaiku jumlah unsur ing dhaptar.
Type[] toArray(Type[] array)
Ngasilake larik sing ngemot unsur dhaptar.
Sampeyan kudu ngliwati array menyang metode kasebut.

Cara iki ngidini sampeyan nindakake meh kabeh sing dikarepake karo dhaptar: ngganti unsur, nambah unsur, lan mbusak unsur. Sampeyan bisa mbusak dhaptar kanthi printah siji, utawa malah ngowahi dhaptar kasebut dadi array.



4. Comparison saka ArrayListlanArray

Aku ora mikir kita bisa supaya mbandhingaké ArrayListlan array.

Mung ana 4 tumindak sing bisa ditindakake nganggo array:

  • Nggawe larik
  • Entuk unsur kanthi indeks
  • Setel unsur kanthi indeks
  • Entuk dawa array

Mangkene operasi kasebut nalika ditrapake kanggo array lan ArrayList:

Array ArrayList
String[] array = new String[10];
ArrayList<String> list = new  ArrayList<String>();
String s = array[0];
String s = list.get(0);
array[0] = "Bye";
list.set(0, "Bye");
int count = array.length;
int count = list.size();

Ayo mbandhingake cara kerjane ArrayListkaro cara kerjane array. Contone, ayo ngleksanakake tugas iki: "maca 10 senar saka keyboard lan nampilake ing layar kanthi urutan mbalikke"

Nggunakake Array Nggunakake ArrayList
Scanner console = new Scanner(System.in);

// Read strings from the keyboard
String[] list = new String[10];

for (int i = 0; i < list.length; i++)
{
    String s = console.nextLine();
    list[i] = s;
}

// Display the contents of the array on the screen
for (int i = 0; i < list.length; i++)
{
    int j = list.length - i - 1;
    System.out.println(list[j]);
}
Scanner console = new Scanner(System.in);

// Read strings from the keyboard
ArrayList<String> list = new ArrayList<String>();

for (int i = 0; i < 10; i++)
{
    String s = console.nextLine();
    list.add(s);
}

// Display the contents of the collection on the screen
for (int i = 0; i < list.size(); i++)
{
    int j = list.size() - i - 1;
    System.out.println(list.get(j));
}

Analogi kasebut cetha. Kabeh luwih cendhek lan luwih cetha kanggo susunan. Nanging ArrayListora angel: kanggo njaluk unsur, kita nggunakake get()cara; kanggo ngganti unsur, set()cara; kanggo njaluk dawa dhaftar, size()cara.

Dadi, kenapa programer nggunakake ArrayListkelas kasebut?

Intine, mesthi, kabeh cara liyane sing ora ana ing array biasa:

  • Tambah unsur menyang dhaptar
  • Tambah unsur ing tengah dhaptar
  • Temokake unsur ing dhaptar
  • Mbusak unsur saka dhaptar