Anda di halaman 1dari 12

BAB II

COLLECTION Sebagai Media Penyimpanan

Gambar 2.1 Contoh penerapan collection pada Jova.

Pernahkah terlintas di dalam pikiranmu, bagaimana cara menyimpan data dalam memori?
Kamu pasti sering berurusan dengan data, seperti saat kamu memindahkan sebuah file
ke dalam flashdisk,yang merupakan salah satu tempat untuk menyimpan data. Tidak
berbeda saat kamu membuat sebuah aplikasi berbasis web, ketika kamu ingin user atau
pengguna untuk mengisi suatu form, misalnya form data diri, maka kamu akan
membutuhkan i tempat penyimpanan untuk menyimpan semua data yang telah di
inputkan oleh pengguna. Aplikasi berbasis web yang bersifat offline yang dibutuhkan
adalah XAMPP, yang merupakan aplikasi tempat penyimpanan data karena XAMPP
menyediakan fitur database. Sedangkan untuk aplikasi web yang bersifat online, kamu
akan membutuhkan hosting dan domain sebagai tempat penyimpanan data. Lalu,
bagaimana dengan Java? Java memiliki tempat penyimpanan yang biasa disebut dengan
Collection, yang tugasnya menyimpan data dalam memori. Collection merupakan suatu
objek yang dapat digunakan untuk menyimpan sekumpulan objek. Objek-objek yang
terdapat di dalam Collection disebut dengan elemen. Collection ini meyimpan elemen
yang bertipe objek, sehingga berbagai tipe objek dapat disimpan di dalam Collection.
Pada bab Il ini kamu akan mempelajari lebih dalam apakah itu Collection, bagaimana
tugasnya, dan kamu juga akan belajar membuat Collection untuk menyimpan data oleh
sistem atau program yang akan kamu buat. Oleh karena itu, kamu harus mempelajari
bab ini dengan penuh semangat!
A. Memahami Collection sebagai Media Penyimpanan Data

Suatu masalah pemrograman terkadang memerlukan banyak data. Misalnya kita ingin
menghitung rata-rata 100 nilai siswa. Apakah kita harus membuat 100 variabel atau data
siswa dengan banyak komponen?

Hal ini tentunya akan membuat sulit ketika membuat program dengan membuat variabel
satu per satu, sehingga untuk mengatasi masalah tersebut dalam Java telah disediakan
collection.

Pada Java, tempat penyimpanan data dikenal dengan collection. Collection merupakan
istilah umum yang digunakan untuk setiap objek yang berfungsi untuk mengelompokkan
beberapa objek.

Collection digunakan untuk menyimpan, mengambil, dan memanipulasi data. Salah satu
collection paling sederhana adalah Array.

Semua kelas yang berhubungan dengan pengelompokan objek ini, di dalam Java
tergabung dalam Java Collection Framework, di mana framework ini diletakkan dalam
package java.util dan mempunyai dua interface utama, yaitu collection dan map.
Kelebihan dari penggunaan collection framework adalah sebagai berikut.

1. Mengurangi effort dalam membuat program, karena sudah tersedia struktur data dan
algoritma tanpa harus menulis sendiri.
2. Meningkatkan performa karena setiap implementasi dapat berfungsi secara maksimal.
3. Mudah dipelajari, sehingga mengurangi effort untuk mempelajari cara menggunakan
API.
4. Dapat dikembangkan dan fleksibel terhadap tipe objek yang ada dalam collection.

Kegiatan yang dapat dilakukan pada sebuah data yaitu berupa pencarian, pengurutan,
memasukkan, dan menghapus. Kegiatan-kegiatan tersebut dapat dilakukan oleh Java
Collections. Java Collection secara sederhana merupakan sebuah objek. Kerangka kerja
Java Collection tersedia dalam bentuk interfaces(Set, List, Queue, Deque, dan lainnya)
dan untuk class (ArrayList, Vector, LingkedList, PriorityQueue, HashSet, LinkedHashSet,
TreeSet dan lainnya). Hierarki Java Collection terlihat pada gambar berikut ini.
Kegiatan 2.1

A. Judul Kegiatan : Menganalisis Peran Collection pada Program Java

B. Jenis Kegiatan : Tugas Mandiri

C. Tujuan Kegiatan :

1 Peserta didik dapat menjelaskan peran collection pada program Jova dengan tepat.
(KD 3)

2. Peserta didik dapat merancang collection dengan terampil. (KD 4)

D. Langkah-Langkah Kegiatan:

1. Bacalah teks di bawah ini!

ArrayList

Biasanya kita menggunakan array untuk menyimpan data yang berurutan, tapi ada
satu masalah dengan Array, yaitu ukurannya tidak dapat berubah secara dinamis saat
eksekusi untuk menampung elemen-elemen tambahan. Sedangkan kelas Collection
ArrayList ukurannya dapat berubah secara dinamis untuk menampung lebih banyak
elemen. Di dalam ArrayList terdapat sebuah placeholder, yang dapat diubah dengan
tipe elemen apapun yang kamu mau ArrayList simpan. Ini mirip saat kita
menspesifikasikan tipe data saat mendeklarasikan array, tapi hanya tipe data
nonprimitif saja yang dapat digunakan dengan kelas-kelas collection ini. Berikut ini
merupakan kode programnya:

ArrayList<String> list;

Kode di atas mendeklarasikan sebuah ArrayList yang hanya dapat menyimpan Strings.
Kumpulan method dari ArrayList dapat dilihat selengkapnya dibagian dokumentasi
program.

2. Setelah kamu membaca teks di atas, apakah ArrayList termasuk ke dalam salah satu
jenis collection yang dapat digunakan sebagai tempat penyimpanan program Java?

-----------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------------
3. Jelaskan peran ArrayList pada program Java!

Peran ArrayList:

-----------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------

4. Buatlah sebuah kode untuk pembuatan collection pada Jova!

Kode program:

-----------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------

Permasalahan dan Penyelesaian

Permasalahan 2.1

Seorang programmer membuat kode program seperti di bawah ini.


String namal - "Marwa";

String nama2 - "Kiki";

String nama3 - "Yozza";

String nama4 - "Bagus";

String nama5 = "Amin":

Kode program di atas digunakan untuk menyimpan objek dengan value nama orang.
Pengkodingan tersebut dapat digunakan saat objek yang dibutuhkan sedikit. Kendala
mulai ditemui saat data yang dibutuhkan sistem sampai ratusan bahkan ribuan. Adakah
solusi atau cara untuk membuat pengkodingan yang sederhana?

Penyelesaian:

Ada cara yang dapat membantu programmer untuk menyimpan objek yang banyak, yaitu
dengan menggunakan array. Array adalah sebuah variabel yang dapat menyimpan
banyak data dalam satu variabel. Array menggunakan indeks untuk memudahkan akses
terhadap data yang disimpannya. Indeks array selalu dimulai dari 0 dan perlu diketahui
juga, indeks tidak selalu dalam bentuk angka, namun dapat berupa karakter atau teks.
Perhatikan kode program berikut yang dapat digunakan untuk membuat array.
// cara pertama
String[] nama;

// cara kedua
String nama [];

// cara ketiga dengan kata kunci new


String[] nama = new String[5);

// contoh
String[] nama {"Linda", "Kiki", "Yozza", "Bagus", "Amin":

B. Memahami Jenis Collection

Jenis pengelompokan collection ini merupakan satu dimensi. Berdasarkan teknik


collection Collection interface, pengelompokannya terbagi menjadi tiga kelompok yaitu
set, list, dan queue. Kemudian ada lima implementasi dasar yang digunakan pula, yaitu
Hash Table, Resizable, Array, Balanced Tree, Linked List, dan Hash Table + Linked List
Masing-masing memiliki kelebihan dan kekurangan tersendiri, tergantung
penggunaannya. Perhatikan gambar di samping

Java Collections adalah framework yang Gambar 2.3 Pengelompokon collection


menyediakan sebuah tempat untuk menyimpandan memanipulasi sekumpulan objek.
Framework tersebut terbagi menjadi tiga kelompok, yaitu sebagai berikut.

1. Set

Set akan mengikuti model himpunan, di mana objek atau anggota yang tersimpan
dalam set harus unik. Urutan maupun letak dari anggota tidaklah penting, melainkan
keberadaan anggota saja yang dianggap penting. Kelas-kelas yang
mengimplementasikan interface set adalah HashSet. Interface Sorted Set merupakan
sub interface dari interface set. Untuk mengurutkan set, kamu dapat menggunakan
kelas yang mengimplementasikan interface Sorted Set, yaitu Classs TreeSet.

2. List

List digunakan untuk menyimpan sekumpulan objek berdasarkan urutan masuk


(ordered) dan menerima duplikasi. Cara penyimpanan datanya seperti array, yakni
memiliki posisi awal dan posisi akhir, menyisipan objek pada posisi tertentu, mengakses
dan menghapus isi list, di mana semua proses selalu berdasarkan atas urutan objek.
Kelas-kelas yang mengimplementasikan interface List adalah Vector, Linked List, dan
Array List. Terdapat interface queue yang memiliki cara penyimpanan objek yang sama
dengan List. Interface ini menyimpan objek mengunakan metode FIFO (First In First
Out) yaitu objek yang masuk pertama akan keluar pertam. Kelas-kelas yang
mengimplementasikan interface queue adalah PriorityQueue dan LinkedList. Priority
Queue akan diurutkan dan data tersebut harus mengimplementasikan objek
Comparable atau Comparator.

3. Map

Perbedaan map dengan set maupun list adalah cara penyimpanan objek di dalam map
Objek yang disimpan dalam map haruslah sepasang, yaitu berupa key yang bersifat
unik darnilai yang disimpan. Untuk mengakses nilai suatu objek, maka kamu harus
mengetahui dari nilai tersebut. Map juga dikenal sebagai dictionary atau kamus. Saat
menggunakan kamus kamu akan membutuhkan kata yang digunakan untuk
melakukan pencarian. Kelas-kelas yang mengimplementasikan map adalah Hashtable,
HashMap, dan Linked HashMap. Untuk mengurutkamap kamu dapat menggunakan
interface SortedMap, dan kelas yang mengimplementasika interface tersebut adalah
TreeMap. Perhatikan tabel yang merupakan implementasi framewor dan interface
yang digunakan dalam sistem di bawah ini.

C. Implementasi Interface Collection

Setelah pengelompokan jenis collection, terdapat beberapa implementasi yang dapat


digunakan oleh programmer untuk mengimplentasikan interface collection. Implementasi
dasar yang harus kamu pahamiadalah Hash Table, Resizeable Array, Balanced Tree,
Linked List, dan Queue. Untuk memperdalam pemahamanmu tentang implementasi dasar
dalam collection. Perhatikan dengan saksama penjelasan berikut ini.

1. Hash Table

Hashing merupakan teknik yang secara khusus digunakan untuk mengidentifikasi objek
tertentu dari sekumpulan objek yang serupa. Fungsi hash adalah melakukan komputasi
indeks yang sama untuk semua string dan string akan disimpan dalam tabel hash. Saat
indeks dari emua string sama, kamu dapat membuat daftar pada indeks tersebut dan
menyisipkan semua string dalam daftar tersebut. Tabel hash adalah struktur data yang
digunakan untuk menyimpan pasangan kunci/nilai. Tabel hash menggunakan fungsi hash
untuk melakukan komputasi pada indeks ke suatu array yang penyisipan atau pencarian
elemennya akan dilakukan. Dengan menggunakan fungsi hash yang bagus, proses
hashing dapat bekerja dengan baik. Mari kita coba menggunakan string S. Cobalah untuk
menghitung frekuensi semua karakter dalam string ini.

string S = "ababcd"

Cara termudah untuk melakukan hal ini adalah dengan melakukan iterasi pada semua
karakter yang memungkinkan dan menghitung frekuensinya satu-persatu, Kompleksitas
waktu pada pendekatan ini adalah O(26*N), di mana N adalah ukuran string dan ada 26
kemungkinan karakter.

2. Resizealble Array
Arraylist merupakan collection yang menjadi bagian dari java.util seperti biasa Araylist dapat
menambah data baru secara dinamistanpa harus menetukan ukuranya diawal. Berbagai operasi dapat
digunakan terhdapt arraylist. Untuk lebih jelasnya,simak table berikut ini
4.
3. LinkedList
4. LinkedList

Linked List (senarai bertautan atau daftar bertautan) adalah salah satu cara untuk
menyimpan sekumpulan elemen. Sama halnya dengan array, elemen yang disimpan
dapat berupa karakter atau integer. Masing-masing elemen dalam Linkedlist disimpan
dalam bentuk sebuah node. Node adalah gabungan dua sub-elemen atau komponen yang
menyimpan elemen dan bagian next yang menyimpan link ke node selanjutnya.
LinkedList terbentuk saat terdapat banyak

node yang saling tertaut dan membentuk sebuah rantai. Setiap node menunjuk pada
node selanjutnya sesuai urutan. Node pertama yang selalu digunakan sebagai referensi
saat melakukan traversing pada list (senarai, daftar) disebut HEAD. Node terakhir akan
menunjuk ke NULL. Perhatikan gambar berikut untuk memperjelas pemahamanmu.
LinkedList dapat diimplementasikan menggunakan struktur dan pointer. Berikut ini
merupakan contoh Linkedlist.
LinkedList<String> bunga - new LinkedList<>0;

buah.add("Mawar");

buah.add("Melati");

buah.add("Anggrek");

System.out.println("Nama Bunga: +bunga);

Hasil Output:

Nama Bunga Mawar Melati Anggrek

5. Queue

Queue merupakan model pengelompokan berdasarkan metode antrian suatu prioritas


tertentu (contohnya FIFO). Beberapa kelas Java yang mengimplementasikan interface
queue ini antara lain PriorityQueue dan LinkedList. Dalam queue terdapat fungsi enqueue
yang digunakan untuk mengatur inputan data yang akan masuk antrian. Pada fungsi ini
juga akan diperiksa apakah antrian sudah penuh atau belum, jika antrian sudah penuh
maka tidak dapat diisi lagi. Selain itu, di dalam queue juga terdapat fungsi dequeue yang
digunakan untuk mengatur data agar keluar dari antrian secara tertib, karena queve
menerapkan prinsip FIFO (Firt In First Out). Variabel yang digunakan pada interface ini
adalah sebagai berikut.

a. queuet , merupakan array tempat queue disimulasikan.


b. arraysize, menyatakan jumlah elemen maksimal yang dapat disimpan di queue 11.

C. front, merupakan titik dalam indeks yang menjadi awal dilakukannya operasi
penghapusan selanjutnya.

d. rear, adalah titik dalam indeks yang menjadi awal dilakukannya operasi penyisipan
selanjutnya.

Berikut ini merupakan contoh sederhana penggunaan queue dalam program Java.
public static void main(String) agrs) (
//membuat dan menginisialisasi interface queue menggunakan objek
linked list
Queue<String> antriTiket - new linkedListo):
//menambahkan data
antriTiket.add("Angga"):
antriTiket.add("Indah");
antriliket.add("Sekar");
antriTiket.add("Rudi");
antri Tiket.add("Rena");
antriTiket.add("Novi");
// menampilkan output dari queue
System.out.prontin (Antrian Tiket Peserta : "+antrian Tiket);
//method remove () akan melempr NoSuchException, jika list queue
kosong
String nama - atrianTiket .remove():
System.out.println("Menghapus antrian Tiket : +nama. Daftar
antrian
baru: "+antrianTiket):
//menghapus sebuah elemen dari queue menggunakan method poll()
dan method
remove () akan mengembalikan nuli, jika list queue kosong
nama = antrianTikett.poll();
System.out.println("Menghapus antrian Tiket : "+nama+" | Daftar
antrian baru:”+antrianTiket);
}

Apabila kode program di atas dijalankan, maka hasil output yang akan ditampilkan pada
layer adalah sebagai berikut.
Antrian Tiket Peserta : [Angga, Indah, Sekar, Rudi, Rena, Novi)

Menghapus antrian Tiket : Angga | Daftar antrian baru: [Indah, Sekar,


Rudi, Rena,Novi)

Menghapus antrian Tiket : Indah Daftar antrian baru: (Sekar, Rudi, Rena,
Novil

Anda mungkin juga menyukai