List

Tipe Data dan Exception di Java

Jim White

Java Developer

Antarmuka List

  • Antarmuka List, sub-antarmuka dari Collection
    • Mendefinisikan grup objek yang berurutan
    • Dapat berisi objek duplikat
  • Beberapa implementasi List
    • Perilaku mirip
    • Implementasi menentukan bagaimana objek dikelola di balik layar
Tipe Data dan Exception di Java

Implementasi List

  • ArrayList - daftar objek yang dapat diubah ukurannya, berindeks (seperti array), dan berurutan

ArrayList mirip array Java dengan elemen berindeks

  • LinkedList - objek terhubung oleh tautan ke objek berikutnya dan sebelumnya.

LinkedList adalah daftar objek yang terhubung oleh pointer

  • Apa pun implementasinya, tambah, hapus, ubah objek dengan cara yang sama
1 Lihat https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html untuk tipe List dan detailnya
Tipe Data dan Exception di Java

ArrayList

  • Buat instance dengan new dan gunakan generics untuk menentukan tipe konten
  • Tambah objek ke akhir list dengan .add(object)
  • Akses objek dengan .get(index)
    • ArrayList berindeks mulai dari nol
  • Ganti/ubah objek dengan .set(index, object)
  • Hapus objek dengan .remove(index)
  • Kosongkan semua objek dengan .clear()
  • Hitung jumlah objek dengan .size()
import java.util.ArrayList;
...
ArrayList<String> animals
  = new ArrayList<String>();

animals.add("horse"); animals.add("cow"); animals.add("horse"); // Duplikat diperbolehkan
String c = animals.get(1); // c="cow" animals.set(1, "chicken");
// Menghapus horse pertama animals.remove(0); // Menghapus semua objek animals.clear();
animals.size();
Tipe Data dan Exception di Java

Objek dan primitif

  • Gunakan wrapper untuk menambahkan primitif ke objek Collections Framework apa pun
  • Primitif yang ditambahkan akan "diautobox"
    • Autobox: proses otomatis membungkus primitif dalam wrapper
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(new Integer(5));
list.add(6);  // 6 otomatis dibungkus oleh Integer lalu ditambahkan
  • Autoboxing berfungsi pada semua objek Collections Framework
Tipe Data dan Exception di Java

Koleksi heterogen

  • Struktur data Collections Framework bisa bersifat heterogen
    • Heterogen = menyimpan objek dari tipe berbeda
    • Gunakan Object sebagai tipe parameter
ArrayList<Object> list = new ArrayList<Object>(); // Izinkan objek apa pun
list.add(new Integer(5)); // Tambah Integer
list.add(6); // Tambah Integer via autoboxing
list.add("Hello"); // Tambah String
Tipe Data dan Exception di Java

Melakukan loop pada List

  • Gunakan sintaks "for-each" untuk mengiterasi objek pada List
ArrayList<String> animals = new ArrayList<String>();
animals.add("horse");
animals.add("cow");
animals.add("chicken");

for (String animal : animals) { // for-each untuk iterasi semua elemen ArrayList
    System.out.println(animal);
}
horse
cow
chicken
Tipe Data dan Exception di Java

println pada List

  • Isi instance List (seperti ArrayList) dapat ditampilkan dengan println
ArrayList<String> animals = new ArrayList<String>();
animals.add("horse");
animals.add("cow");
animals.add("chicken");
System.out.println(animals);  // Tampilkan semua elemen dalam ArrayList

ArrayList<Object> list = new ArrayList<Object>();
list.add(5);
list.add("Hello");
System.out.println(list);  // Tampilkan semua elemen dalam ArrayList
[horse, cow, chicken]
[5, Hello]
Tipe Data dan Exception di Java

LinkedList

  • LinkedList dibuat seperti ArrayList
  • LinkedList memiliki metode yang sama dengan ArrayList
import java.util.LinkedList;
...
LinkedList<String> cars // Buat ... baru
  = new LinkedList<String>(); // ... LinkedList
cars.add("Ford"); // Tambah objek ke list
cars.add("Mercedes");
String c = cars.get(1);
cars.set(1, "Toyota"); // Ganti objek
System.out.println(cars); // Tampilkan list
cars.remove(0); // Hapus objek
cars.clear();  // Hapus semua objek
cars.size(); // Dapatkan panjang list
[Ford, Toyota]
Tipe Data dan Exception di Java

Metode tambahan LinkedList

  • Beberapa metode tambahan
    • addFirst() tambah di awal list
    • addLast() tambah di akhir list
    • removeFirst() hapus dari awal
    • removeLast() hapus dari akhir
cars.addFirst("Fiat"); // Tambah di awal
cars.addLast("BMW"); // Tambah di akhir
cars.removeFirst(); // Hapus yang pertama
cars.removeLast(); // Hapus yang terakhir
Tipe Data dan Exception di Java

Kemiripan tipe koleksi

  • ArrayList dan LinkedList terlihat sama
    • Tipe lain di Collections Framework juga punya kemiripan
    • Ini disengaja
  • Mereka berbagi antarmuka: List
    • Contoh polimorfisme ("banyak bentuk")
Tipe Data dan Exception di Java

ArrayList vs LinkedList

  • Operasi pada ArrayList dan LinkedList (atau List mana pun) sama
    • Pilih tipe List sesuai kebutuhan
  • Pertimbangan ArrayList:
    • Akses acak cepat (contoh: list.get(11))
    • Lebih lambat saat menambah/menghapus di tengah
    • Karena objek harus dipindah secara fisik saat sisip/hapus

Menambah objek di tengah ArrayList membutuhkan banyak pemindahan

Tipe Data dan Exception di Java

ArrayList vs LinkedList

  • Pertimbangan LinkedList:
    • Akses acak lebih lambat (contoh: list.get(11))
    • Lebih cepat menambah/menghapus di tengah
    • Karena tidak ada objek yang dipindah; hanya referensi yang diubah

Menambah objek di tengah LinkedList hanya perlu mengubah beberapa pointer

Tipe Data dan Exception di Java

Ayo berlatih!

Tipe Data dan Exception di Java

Preparing Video For Download...