IMPLEMENTASI STRUKTUR DATA LIST, QUEUE DAN STACK DALAM JAVA

dokumen-dokumen yang mirip
MODUL III ARRAYLIST TUGAS PENDAHULUAN

KOLEKSI OBJECT. Farah Zakiyah Rahmanti, M.T Universitas Dian Nuswantoro

Pemrograman Berorientasi Obyek Lanjut (IT251) Ramos Somya, S.Kom., M.Cs.

KUM 5 IMPLEMENTASI QUEUE

Algoritma Pemrograman [BS204]

Pemrograman Berorientasi. Array dan Collections

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA STACK

Gambar 1. Single Linked List

Modul 3: Tipe Data Abstrak Dinamis List, LinkList dan Model Antrian Stack & Queue

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA LINKED LIST (BAGIAN 1)

Algoritma dan Struktur Data. Queue

Java Generic & Collection

IF PEMROGRAMAN LANJUT GENERIC. Oleh : Andri Heryandi, M.T.

Grouping Object. Viska Mutiawani, M.Sc

IF PEMROGRAMAN LANJUT TUGAS 1. Oleh : Andri Heryandi, M.T.

1. Latar Belakang Didalam pembuatan game java sering kali kita mendefinisikan banyak object seperti gambar, dan grafik geometri yang begitu banyak,

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA LINKED LIST (BAGIAN 2)

03/04/2018. Collection set List Map. Pemrograman Berorientasi Object

A. TUJUAN PEMBELAJARAN 1. Memahami konsep dan operasi pada Stack. 2. Mampu mengimplementasikan struktur data Stack pada array dan List.

Gambar 1. Single Linked List

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA QUEUE

*Sekumpulan elemen yang diatur secara terurut. *Linear List tidak sama dengan Connected-List

Gambar 1. Single Linked List

LIST. Dewi Sartika, M.Kom

Arrays, Collections and Generics. Sisilia Thya Safitri, MT Agus Priyanto, MKom

Struktur Data. Tumpukan : Definisi & Operasi. Pertemuan 4 PROBLEM ALGORITHM DATA IMPLEMENTATION. Pert. 4b Struktur Data - FMIPA USD

Lab. Teknik Informatika Struktur Data 1

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA MODUL KE-2 STACK DAN QUEUE

BAB 2 COLLECTION & THREAD

Pada pembuatan game di java, sering kali para programer. mendefinisikan banyak object seperti suara, gambar, dan grafik geometri yang

Pertemuan 2 (2) : Membuat Class dan mengakses Anggota Class

Algoritma dan Struktur Data STACK

STRUKTUR DATA Pertemuan 1 s.d 8

Variabel dengan tipe dasar hanya dapat menyimpan sebuah nilai

POINTER STACK DAN QUEUE. Institut Teknologi Sumatera

Masukan Judul... Infotype àsebuah tipe terdefinisi yang menyimpan informasi sebuah elemen list

Pemrograman Berorientasi. Class dan Obyek 2

Praktikum Stack. A. Stack Collection di java.util.collection. Percobaan 1. Percobaan 2. import java.util.iterator; import java.util.

: Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Linked List. Single Linked List

BAB VI ARRAY Mendeklarasikan Variabel Array int[ ] bilangan; int bilangan[ ]; Mendefinisikan Array Bilangan = new int[5]; Latihan 21. ArrSatu.

KUM 3 IMPLEMENTASI LIST

PEMROGRAMAN JAVA : ARRAY

2. Mahasiswa dapat membuat dan menggunakan array dan linked list dalam suatu kasus.

Konsep Lanjut Pemrograman Objek

Struktur Data dan Algoritma IKI10400 Semester Gasal 2010/2011 Fakultas Ilmu Komputer Universitas Indonesia

Gambar 1. Single Linked List

Algoritma Dan Struktur Data II

Belajar ArrayList di Java

QUEUE (ANTREAN) Operasi Antrean : FIFO (First In First Out) Elemen yang pertama masuk merupakan elemen yang pertama keluar.

Praktikum KPLBO Class dan Object I

Pertemuan 7. REVIEW dan QUIS

Array. Pengantar. int a, b, c, d, e;

Arrays. Misalkan kita ingin menyimpan 100 buah integer Buat 100 variabel bertipe integer. Tidak efisien!

(3) BAHAN KAJIAN (materi ajar)

Modul Praktikum 4 Pemograman Berorientasi Objek

Praktikum. PBO (Kelas K) Oleh : MOHAMMAD SHOLIKIN

TUGAS DASAR PEMROGRAMAN KELAS C DOSEN PENGAMPU : IKA ATSARI DEWI, STP, MP

Sekarang, kita akan mencoba untuk menganalisa program Java pertama : public class Hello {

Bab 8. Dasar-Dasar OOP

PRAKTIKUM PEMROGRAMAN LANJUT MODUL 1

Algoritma Pemrograman & Struktur Data

A. TUJUAN PEMBELAJARAN 1. Mengetahui cara menangani exception dengan cara melempar exception. 2. Mengetahui cara membuat sendiri class exception.

STACK DAN QUEUE. Pengertian Stack Dan Queue. stack & queue. Last saved by KENKEINA Created by KENKEINA

PERTEMUAN III OBJEK DAN CLASS TUJUAN PRAKTIKUM

Obyektif : KONTROL ALUR PROGRAM

Pemanfaatan Algoritma BFS pada Graf Tak Berbobot untuk Mencari Jalur Terpendek

Senarai berantai. linked list. Pertemuan keenam Struktur data st3telkom.ac.id. by : tenia wahyuningrum & Sisilia Thya Safitri

MODUL 4. COLLECTIONS ARRAYS, QUEUE, dan STACK

Praktikum KPLBO Final Object Concept I

Struktur Data dan Algoritma

Algoritma Dan Struktur Data II

PEMAHAMAN DASAR DASAR JAVA

BAB VII. CLASS DAN OBJECT

Java Collections Framework

Linked List dan Implementasinya dalam Bahasa Java

Collections. Collections Framework

Pemrograman Berbasis Objek. Collections. Politeknik Elektronika Negeri Surabaya

DIKTAT KULIAH ALGORITMA dan STRUKTUR DATA II. : Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Queue.

STACK (TUMPUKAN) & QUEUE (ANTRIAN) Altien Jonathan Rindengan, S.Si., M.Kom.

MATERI PRAKTIKUM STRUKTUR DATA

BAB IV PERANCANGAN. IV.1 Evaluasi Usulan untuk Perancangan Iteratif

PRAKTIKUM STRUKTUR DATA QUEUE. SULIDAR FITRI, M.Sc

JAVA FUNDAMENTAL ATURAN PERKULIAHAN SILABUS

Single Linked List (1)

Tutorial - Single Linked List

Penerapan BFS dan DFS dalam Garbage Collection

Politeknik Elektronika Negeri Surabaya

Generics. Prepared by Viska Mutiawani. 1

Algoritma dan Struktur Data. Pertemuan 7 Linked List

Jobsheet 16 String dan Collection (List, Set, Map)

STACK atau TUMPUKAN. Pertemuan 5 STACK (TUMPUKAN)

IX. Implementasi ADT : Stacks & Queues. Operasi dasar Contoh kegunaan Implementasi Array-based dan linked list-based

LAPORAN RESMI PRAKTIKUM BAHASA PEMROGRAMAN

BAB VIII QUEUE (ANTRIAN)

Data structure :Metode LINK LIST. Kusnawi, S.Kom, M.Eng STMIK AMIKOM Yogyakarta

OBJECT ORIENTED PROGRAMMING (OOP)

Pendahuluan Struktur Data. Nisa ul Hafidhoh

IKG2I4 / Software Project I

Dasar Pemrograman Java

Percabangan & Perulangan

Transkripsi:

Media Informatika Vol. 15 No.3 (2016) IMPLEMENTASI STRUKTUR DATA LIST, QUEUE DAN STACK DALAM JAVA Rachmat Selamet Sekolah Tinggi Manajemen Informatika dan Komputer LIKMI Jl. Ir. H. Juanda 96 Bandung 40132 E-mail : rachmatselametskom@gmail.com Abstrak Java adalah pemograman yang menggunakan konsep object oriented murni. Dengan menggunakan versi JDK (Java Develompent Kit) dari Java, maka kelas untuk mengoperasikan list, queue dan stack sudah tersedia. Untuk mengakses data dari kelaskelas tersebut dapat dikonversi menjadi array atau iterator (list satu arah). Dalam Java, List dapat diimplementasikan menggunakan LinkedList atau ArrayList atau Vector sesuai dengan fungsinya. LinkedList digunakan untuk menyimpan data yang sering ditambah atau dihapus. ArrayList digunakan untuk menyimpan data yang sering dicari atau diakses. Vector digunakan untuk menyimpan data yang digunakan oleh lebih dari 1 proses. Queue adalah struktur yang memproses data secara FIFO (First In First Out) dan Stack adalah struktur yang memproses data secara LIFO (Last In First Out). Java sudah menyedikan LinkedList yang digunakan sebagai queue, Stack yang digunakan sebagai stack, dan ArrayDeque sebagai deque (gabungan antara queue dan stack). PriorityQueue digunakan untuk kasus yang memiliki kriteria khusus untuk didahulukan. Kata-kata kunci : Java, list, queue, stack 1 PENDAHULUAN Dunia pemograman mengalami kemajuan pesat. Hal ini ditandai dengan makin berkurangnya penggunaan program secara prosedural dan makin bertambahnya penggunaan konsep object oriented. Salah satu bahasa pemograman yang murni menggunakan konsep object oriented adalah Java. Untuk kebutuhan pemograman, versi Java yang digunakan adalah JDK (Java Development Kit). Dalam versi ini, Java sudah menyediakan kebutuhan umum dalam implementasi struktur data secara umum, seperti list, queue dan stack dalam bentuk 18

Media Informatika Vol. 15 No. 3 (2016) 19 kelas di Java. Kelas-kelas tersebut memiliki atribut dan method yang menggunakan istilah yang sama dalam dunia struktur data. Dalam paper ini akan dibahas bagaimana cara menggunakan kelas yang berhubungan dengan struktur data. Khusus untuk mengakses data, kelas-kelas ini secara umum dapat dikonversi menjadi array atau iterator (list satu arah). Hal ini disebabkan karena list dan queue diturunkan atau diimplementasi dari kelas Collection (dapat dilihat pada gambar 1). Kelas inilah yang memiliki operasi untuk konversi array dan iterator. Gambar 1. Hirarki kelas untuk kebutuhan struktur data [3] 2 ARRAY DAN ITERATOR Array adalah struktur data yang paling umum digunakan dalam semua bahasa pemograman. Deklarasi array dalam Java menggunakan kurung kotak [ ] dengan isi jumlah maksimal yang dapat ditampung oleh array. Sedangkan index yang dapat diakses oleh array adalah dari 0 sampai jumlah maksimal-1. Contoh akan diberikan pada bab 3 tentang mengakses data menggunakan array. Iterator adalah sebuah list 1 arah yang berfungsi untuk mengakses semua data dari list. Kelas ini hanya memiliki 2 method, yaitu hasnext() (untuk memeriksa apakah masih ada data selanjutnya atau tidak) dan next() (untuk mengambil data). Contoh akan diberikan pada bagian tentang mengakses data menggunakan iterator. 3 LIST List adalah sekumpulan data sejenis yang berada dalam lokasi yang fleksibel (dapat berubah sesuai dengan kebutuhan). Java sudah menyediakan 3 jenis kelas yang berhubungan dengan list, yaitu :

20 Rachmat Selamet Implementasi Struktur Data List, Stack dan Queue dalam Java a. LinkedList : kelas yang berisi dobel linked list (data dapat diakses dari depan atau belakang) b. ArrayList : kelas yang mengimpelemtasikan array tetapi dapat beroperasi seperti list (dapat bertambah atau berkurang otomatis) c. Vector : kelas yang mirip dengan arraylist tetapi memiliki thread-safe, artinya aman digunakan jika diakses lebih dari 1 proses. Perbedaan antara LinkedList dengan ArrayList : a. Pencarian data : ArrayList melakukan pencarian jauh lebih cepat karena menggunakan index (seperti array) sedangkan LinkedList mencari per-elemen b. Menghapus data : LinkedList lebih cepat terutama dalam menghapus elemen pertama atau terakhir (tinggal menggeser pointer) dibandingkan ArrayList (karena harus menggeser posisi index elemen/item dari array untuk menghapus elemen) c. Menyisipkan data : LinkedList lebih baik dari ArrayList dengan alasan sama dengan menghapus. d. Penggunaan memori : ArrayList menggunakan index untuk pemilihan data sedangkan LinkedList menggunakan pointer untuk data tetangganya yang memakan memori jauh lebih besar dibandingkan index dari Array Perbedaan antara ArrayList dengan Vector : a. Synchronization : ArrayList non-synchronized artinya hanya dapat dikerjakan 1 proses dalam 1 waktu. Sedangkan Vector synchronized. b. Resize : Kedua kelas dapat bertumbuh dan mengecil secara dinamis tetapi ArrayList memakan ukuran setengah dari ukurannya sedangkan Vector memakan 2x dari ukurannya c. Performance : ArrayList lebih baik performanya karena non-synchronized, sedangkan Vector harus mengurusi dahulu thread-safe (bagaimana mengatur penguncian proses apabila ada proses lain datang) d. Fail-fast : Vector tidak fail-fast, sedangkan ArrayList fail-fast. Fail-fast adalah bagaimana program mendukung reaksi cepat struktur data dalam mengalami perubahan. Pembuatan program menggunakan List:

Media Informatika Vol. 15 No. 3 (2016) 21 a. Deklarasi : JenisList<data> namavar = new JenisList<data>(); Contoh : ArrayList<String> isidata=new ArrayList<String>(); b. Menambah data : namavar.add(nilai data); Contoh : isidata.add( Budiman ); c. Menghapus data : namavar.remove(nilai data); Contoh : isidata.remove( Budiman ); d. Mengubah data : namavar.set(nilai lama, nilai baru); Contoh : isidata.set( Budiman, Anton ): e. Memeriksa kosong : namavar.isempty(); Contoh : if (isidata.isempty()) System.out.println( Isi list kosong! ); f. Memeriksa data : namavar.contains(nilai data); Contoh : if (isidata.contains( Anton )) System.out.println( Anton ada! ); g. Mengitung posisi data data : namavar.indexof(nilai data); Contoh : if (isidata.contains( Anton )) System.out.printf( %d\n, isidata.indexof ( Anton )); h. Mengitung jumlah data : namavar.size(); Contoh : System.out.printf( %d\n,isidata.size()); i. Mengakses data menggunakan iterator : Iterator <String> itr=isidata.iterator(); String skrg = ; while (itr.hasnext()){ skrg = itr.next(); System.out.println(skrg); j. Mengakses data menggunakan array : String dt[]=new String[isidata.size()]; isidata.toarray(dt);

22 Rachmat Selamet Implementasi Struktur Data List, Stack dan Queue dalam Java for (int i=0;i<dt.length;i++){ System.out.println(dt[i]); 4 QUEUE DAN STACK Queue adalah struktur data yang mengakses data secara FIFO (yang awal datang, yang awal diproses). Kelas di Java yang dapat mengimplementasikan queue adalah LinkedList dan PriorityQueue. Stack adalah struktur data yang mengakses data secara LIFO (yang terakhir datang, yang awal diproses). Kelas di Java yang dapat mengimplementasikan stack adalah Stack. Stack merupakan turunan dari Vector, sehingga seluruh operasi dari vector dapat digunakan di Stack. Deque adalah struktur data gabungan dari queue dan stack. Deque memiliki seluruh operasi queue dan seluruh operasi stack. Kelas di Java yang dapat mengimpelemtasikan deque adalah ArrayDeque. Pembuatan program untuk queue dan stack : a. Deklarasi : : QueueStack<data> namavar = new QueueStack<data>(); Contoh : Stack<String> isidata = new Stack<String>(); b. Menambah data : Queue.offer(nilai data); Stack.push(nilai data); Contoh : isidata.push( Budiman ); c. Mengambil data pertama dan menghapusnya : Queue.poll(); Stack.pop(); Contoh : String skrg=isidata.pop(); d. Mengambil data pertama dan menghapusnya : namavar.peek(); Contoh : String skrg=isidata.peek(); PrirortyQueue adalah jenis queue yang dapat memberikan prioritas untuk akses data yang lain. Contoh :

Media Informatika Vol. 15 No. 3 (2016) 23 public class ContohPriorityQueue { public static void main(string[] args) { public static PriorityQueue<Pasien> qpasien = new PriorityQueue<Pasien>(10, new Comparator<Pasien>() { public int compare(pasien pasien1, Pasien pasien2) { return (pasien1.isdarurat() == pasien2.isdarurat())? (Integer.valueOf(pasien1.nomor).compareTo(pasien2.nomor)) : (pasien1.darurat? -1 : 1); ); qpasien.offer(new Pasien(1, Anton,false)); qpasien.offer(new Pasien(2, Budi,true)); qpasien.offer(new Pasien(3, Bambang,false)); qpasien.offer(new Pasien(4, Andi,true)); skrg = dt.poll(); while (skrg!= null) { System.out.print(skrg.getNomor() + " " + skrg.getnama() + " " + skrg.isdarurat() + " <-- "); skrg = dt.poll(); System.out.println(); public static class Pasien{ private int nomor; private String nama; private boolean darurat; public boolean isdarurat() { return darurat; public void setdarurat(boolean darurat) { this.darurat = darurat; public String getnama() { return nama; public void setnama(string nama) { this.nama = nama; public int getnomor() { return nomor; public void setnomor(int nomor) { this.nomor = nomor; public Pasien(int id, String n,boolean d){ nomor = id; nama = n; darurat = d;

24 Rachmat Selamet Implementasi Struktur Data List, Stack dan Queue dalam Java Pada contoh program PriortyQueue pasien, data masuk berdasarkan urutan input data. Pada saat data diambil menggunakan poll, maka data akan diambil otomatis berdasarkan comparator. Pada contoh pasien, comparator yang digunakan adalah untuk membandingkan apakah pasien tersebut darurat atau tidak, jika darurat akan didahulukan dibandingkan berdasarkan nomor. 5 KESIMPULAN Kesimpulan yang dapat ditarik dari hasil perancangan dan implementasi perangkat lunak permainan musik digital ini adalah sebagai berikut : a. Dengan menggunakan Java versi JDK, implementasi struktur data menjadi lebih mudah karena sudah disediakan dalam bentuk kelas dengan istilah-istilah yang sama dengan yang digunakan dalam struktur data. b. Semua struktur list, queue dan stack dapat diakses dengan mengkonversi menjadi bentuk array atau iterator. c. LinkedList secara umum digunakan untuk kasus yang banyak berhubungan dengan insert dan delete, misalnya : kasus saham dan valuta asing. d. ArrayList secara umum digunakan untuk kasus yang banyak berhubungan dengan pengaksesan data secara cepat. Tipe data ini yang paling banyak digunakan untuk kasus-kasus database di perusahaan. e. Vector secara umum digunakan untuk kasus yang berhubungan dengan pengaksesan data secara cepat tetapi digunakan untuk lebih dari 1 proses. Tipe data ini digunakan untuk kasus-kasus database yang datanya didapat diakses oleh beberapa pemakai (multi user). f. Queue merupakan struktur yang paling banyak digunakan untuk pemrosesan data karena pengaksesan data dimulai dari awal. g. Stack digunakan untuk kasus yang memerlukan pemrosesan data dari data terakhir. Kasus yang umum menggunakan stack adalah pembuatan proses undo/redo pada program. h. Deque dapat diterapkan untuk stack maupun queue, karena deque dapat memproses data dari depan maupun dari belakang. i. PriorityQueue merupakan struktur perluasan dari queue. Struktur ini umum digunakan untuk kasus-kasus yang antriannya memiliki kriteria khusus untuk

Media Informatika Vol. 15 No. 3 (2016) 25 diakses lebih dahulu. Kasus paling umum menggunakan struktur ini adalah antrian pasien ke dokter. Apabila ada pasien darurat, maka pasti akan didahulukan. 6 DAFTAR PUSTAKA [1] https://docs.oracle.com. [2] http://www.javatpoint.com. [3] http://beginnersbook.com. [4] http://www.tutorialspoint.com.