Pages

9/11/2013

Abstract data type: List, Queue, dan Stack pada Java

Pada post kali ini saya akan memaparkan beberapa Abstract Data Type (Collection) yang tergolong dalam Linear Collection. Ketiga Liniear Collection ini mirip dengan Array. Kenapa? Karena ketiganya dapat menyimpan beberapa kumpulan data yang seragam, seperti pada Array, namun yang membedakannya dengan Array adalah pengoperasinya.

List (ArrayList)

ArrayList adalah Liniear Collection yang operasi atau penggunaannya mirip dengan Array, namun dengan ukuran yang dinamis. Pada saat mendeklarasikan variabel Array kita perlu menyebutkan berapa jumlah maksimum elemen yang ditampung misalkan ukurannya N, dan saat Array tersebut digunakan, indeks yang dipanggil tidak lebih dari N-1 (terhitung dari indeks 0), itu artinya kita tidak bisa memanggil bahkan menambahkan Array tersebut pada indeks ke N. Untuk mengatasinya kita gunakan ArrayList, dimana secara otomatis kita dapat meng-expand ukuran elemennnya.

Selain Automatic Expansion, ArrayList mempunyai karakteristik:
  • Dapat diadaptasikan pada for-loop (seperti iteraror pada C/C++)
  • ArrayList mempunyai method utama: inserting, deleting dan searching
  • Kompleksifitas waktu: Akses Element = O(1), Inserting dan Deleting = O(N)

Perlu untuk diketahui, ArrayList ini berada pada package java.util.ArrayList, jadi kita perlu meng-import package tersebut terlebih dahulu sebelum menggunakann ArrayList.

Berikut adalah beberapa method dari ArrayList, variabel dan objek yang digunakan akan disesuaikan dengan potongan program dibawah

ArrayList<E> arr = new ArrayList<E>()

Method Nilai Balik Deskripsi
arr.add(E) void Mengisi arr dengan element E (dimulai dari indeks terakhir)
arr.add(i,r) void Mengisi arr dengan element E pada indeks ke-i (jika sebelumnya terdapat elemen pada indeks ke-i, maka elemen tersebut akan digeser posisinya ke kanan)
arr.set(i,E) E Mengeset elemen indeks ke-i dengan nilai E
arr.get(i) E Mengembalikan elemen indeks ke-i
arr.remove(i) E Menghapus elemen indeks ke-i
arr.clear() void Menghapus seluruh elemen
arr.contains(E) boolean Mengembalikan nilai boolean TRUE apabila ArrayList berisi elemen E, atau FALSE apabila sebaliknya
arr.size() int Mengembalikan ukuran (jumlah elemen) ArrayList arr
arr.toArray() E[] Mengembalikan ArrayList yang dikonversi menjadi Array


LIFO Queue (Queue)

Queue memiliki karakteristik yang sama dengan ArrayList, hanya saja pengoperasiannya jauh lebih sederhana. Queue hanya memungkinkan untuk melakukan penambahan data pada indeks pertama (front) dan penghapusan data pada indeks terakhir (back) atau bisa dikatakan Stack memiliki konsep pengoperasian Last-in-First-out (LIFO). Namun pada implementasinya, method dari class Queue memungkinkan kita untuk menambah dan menghapus elemen pada indeks pertama ataupun indeks terakhir. Package Queue bisa kita import di java.util.Queue

Berikut adalah beberapa method dari Queue, variabel dan objek yang digunakan akan disesuaikan dengan potongan program dibawah

Queue<E> arr = new Queue<E>()

Method Nilai Balik Deskripsi
arr.add(E) boolean Mengisi Queue arr dengan element E (diletakkan pada indeks terakhir / back), dan mengembalikan nilai boolean TRUE apabila pengisian berhasil dilakukan
arr.element() E Mengembalikan elemen terakhir (back) pada Queue arr (bila ada)
arr.peek() E Mengembalikan elemen pertama (front) pada Queue arr (bila ada)
arr.poll() E Menghapus elemen pertama (front) pada Queue arr (bila ada), dan mengembalikan elemen tersebut

Pushdown Stack (Stack)

Pengoperasian Stack jauh lebih sederhana lagi (dibandingkan Queue), Stack hanya memungkinkan untuk melakukan penambahan dan penghapusan data pada indeks awal elemen atau front element atau bisa dikatakan Stack memiliki konsep pengoperasian First-in-First-out (FIFO atau pushdown) serta hanya memungkinkan untuk mengembalikan elemen pada indeks tertentu melainkan hanya pada indeks pertama. Package Stack berada bisa kita import di java.util.Stack

Berikut adalah beberapa method dari Stack, variabel dan objek yang digunakan akan disesuaikan dengan potongan program dibawah

Stack<E> arr = new Stack<E>()

Method Nilai Balik Deskripsi
arr.push(E) E Mengisi elemen pertama (front) pada Stack arr dengan element E, dan elemen tersebut
arr.peek() E Mengembalikan elemen pertama (front) pada Stack arr (bila ada)
arr.pop() E Menghapus elemen pertama (front) pada Stack arr (bila ada), dan mengembalikan elemen tersebut

5 le Journal de MVA: Abstract data type: List, Queue, dan Stack pada Java Pada post kali ini saya akan memaparkan beberapa Abstract Data Type ( Collection ) yang tergolong dalam Linear Collection . Ketiga Liniear ...

5 comments:

  1. gan gak kebalik ya yang Queues itu FIFO sementara Stack itu LIFO.
    CMIIW baru belajaran hehe

    ReplyDelete
    Replies
    1. Konsep FIFO itu seperti tumpukan. Didalam sebuah tumpukan, jika dilakukan penambahan maka akan ditempatkan di atas, dan jika dilakukan pengambilan elemen maka elemen yang diambil harus pula elemen yang berada di atas. "First in, First Out" - Stack

      Sementara LIFO, mempunyai konsep seperti antrian. Dimana elemen urutan pertama (Front/First element) yang terlebih dahulu keluar, dan elemen yang masuk akan ditempatkan di belakang (Rear/Last element). "Last In, First Out" - Queue

      Delete
    2. Lah kebalik gan
      FIFO = Pertama masuk berarti dialah yang pertama keluar.
      Kalo modelnya kaya tumpukan, berarti itu barang kan yang baru masuk ada dibawah dan kalo mau keluar nunggu barang yang diatas (yang terakhir masuk) keluar dulu, baru barang yang dibawah (yang pertama masuk) bisa keluar.
      Ibaratkan agan numpuk buku di kardus, agan masukin MERAH lalu BIRU lalu HIJAU, berarti kita dapati bahwa yang FIRST IN = MERAH , dan yang LAST IN = HIJAU
      kalo agan mau ngerluarin semua itu buku, pasti HIJAU yang pertama kali keluar ?
      maka tumpukan itu LIFO = Yang terakhir masuk, itu yang terakhir keluar

      Delete
  2. This comment has been removed by the author.

    ReplyDelete

< >