Set, Queue

Tipe Data dan Exception di Java

Jim White

Java Developer

Antarmuka Set

  • Set juga jenis Collection
    • Tidak mengizinkan objek duplikat
      • Menjamin tiap elemen unik
    • Objek Set umumnya tidak berurut (tidak punya indeks)
  • List seperti kotak pil untuk objek; tiap objek di posisi tertentu
  • Set seperti karung yang menampung objek; objek tersimpan acak

List seperti kotak pil; objek disimpan di indeks tertentu

Set seperti karung; objek acak dan tidak berurut

1 Gambar milik Wikimedia Commons
Tipe Data dan Exception di Java

List vs Set

  • Kapan menggunakan Set
    • Menjamin elemen unik
    • Lebih cepat untuk pencarian
      • Mengecek apakah objek ada di Set
    • Lebih hemat memori saat koleksi membesar
    • Cocok untuk uji keanggotaan di cache
      • Contoh: mencari kata unik dalam dokumen
Tipe Data dan Exception di Java

List vs Set

  • Kapan menggunakan List
    • Mempertahankan urutan dan mengizinkan duplikat
    • Lebih cepat saat akses berdasarkan posisi
    • Lebih cepat saat tambah/hapus berdasarkan indeks
    • Cocok saat urutan elemen penting
      • Mis.: mengelola langkah urutan atau lagu di playlist
Tipe Data dan Exception di Java

Implementasi Set

  • Banyak implementasi Set
    • HashSet adalah yang populer
  • HashSet
    • Kantong objek yang tidak berurut
    • Lebih cepat daripada implementasi Set lain untuk sisip, hapus, dan pencarian
    • Umumnya memakai lebih banyak memori daripada implementasi Set lain
    • Mengizinkan menyimpan satu null

HashSet adalah kantong objek tak berurut yang mengizinkan satu null

Tipe Data dan Exception di Java

Membuat HashSet

  • Gunakan konstruktor bertipe generik untuk membuat HashSet
    HashSet<String> set = new HashSet<String>();
    
  • HashSet ada di paket java.util
    • Perlu import
    • import java.util.HashSet
Tipe Data dan Exception di Java

Metode HashSet

  • Gunakan .add() dan .remove() untuk menambah/hapus objek
  • Gunakan .remove() lalu .add() untuk mengganti objek
  • Gunakan .contains() untuk cek apakah objek sudah ada
  • Duplikasi diabaikan
  • Mengizinkan null
  • Tidak menjamin urutan
set.add("France");
set.add("Japan");
set.add("Brazil");
set.add("Egypt");
set.add(null); // null is allowed
set.remove("Brazil");
boolean z =
  set.contains("France"); // z is true
set.add("Japan"); // Ignored
System.out.println(set);
[null, Japan, Egypt, France]
Tipe Data dan Exception di Java

Antarmuka Queue

  • Struktur data Queue memproses objek dengan urutan first in, first out (FIFO)
    • Objek pertama yang ditambahkan adalah yang pertama dihapus
    • Seperti antrean loket tiket
    • Memiliki head dan tail

Gambar queue dengan head (awal) dan tail (akhir)

  • Ada beberapa implementasi Queue
    • Perilaku dan operasinya mirip
Tipe Data dan Exception di Java

ArrayBlockingQueue

  • Implementasi Queue yang populer
    • Berbasis array
  • Perhatian: ArrayBlockingQueue ada di paket java.util.concurrent
    • Bukan di java.util
Tipe Data dan Exception di Java

Membuat ArrayBlockingQueue

  • Gunakan konstruktor bertipe generik untuk membuat ArrayBlockingQueue
    • Memiliki kapasitas (batas jumlah objek) ditentukan di konstruktor
import java.util.concurrent;  // Di bagian atas kelas

// Buat queue baru yang dapat menyimpan 4 String
ArrayBlockingQueue<String> queue = new ArrayBlockingQueue<String>(4);
Tipe Data dan Exception di Java

Metode ArrayBlockingQueue

  • Gunakan .add(object) atau .offer(object) untuk menambah di tail
    • .add(object) melempar exception saat Queue penuh
    • .offer(object) mengabaikan objek baru saat penuh
ArrayBlockingQueue<String> queue 
    = new ArrayBlockingQueue<String>(4);
queue.offer("France");
queue.offer("Japan");
queue.offer("Brazil");
queue.offer("Egypt");
queue.offer("China"); // Ignores China

// Causes IllegalStateException
// queue.add("China");

System.out.println(queue);
[France, Japan, Brazil, Egypt]
Tipe Data dan Exception di Java

Metode ArrayBlockingQueue

  • Gunakan .remove() atau .poll() untuk menghapus dari head
    • .remove() melempar exception saat Queue kosong
    • .poll() mengembalikan null saat Queue kosong
  • Tidak mengizinkan null
ArrayBlockingQueue<String> queue 
    = new ArrayBlockingQueue<String>(4);
String x = queue.poll(); // x is null
// Causes NoSuchElementException
// String y = queue.remove();

queue.offer("France");
String next = queue.poll();
System.out.println(next);
France
Tipe Data dan Exception di Java

Ayo berlatih!

Tipe Data dan Exception di Java

Preparing Video For Download...