Anda di halaman 1dari 8

Introduction to Java Collection

DATA STRUCTURES AND ALGORITHMS


Department of Information Systems ITS
Renny P. Kusumawardani, S.T., M.T., SCJP

Dalam latihan ini anda akan mengenal dan mempelajari beberapa kelas pada
framework Java Collection, yaitu suatu kumpulan kelas yang mengandung struktur
data dan fungsionalitas yang terkait dengan struktur data tersebut. Kelas-kelas
tersebut berada pada package java.util.

1. Interface

Sebelumnya, ada suatu hal yang perlu anda ketahui, yaitu konsep interface. Istilah
interface ini akan anda jumpai pada dokumentasi Java terkait Java Collection. Secara
kasar, anda dapat membayangkan interface sebagai semacam kelas. Namun, anda
tidak dapat membuat objek baru bertipe suatu interface. Guna dari interface ini adalah
untuk mendefinisikan method-method apa saja yang dimiliki suatu kelompok kelas
yang menjadi ‘turunan’ dari interface tersebut. Misalnya, anda ingin mendefinisikan
bahwa semua jenis Hewan itu bisa berjalan. Perbedaan antara berjalannya satu jenis
Hewan dengan jenis Hewan yang lain adalah pada kecepatannya. Untuk mencapai
hal tersebut, anda bisa membuat interface bernama Hewan yang memiliki method
berjalan dengan argumen berapa jam Hewan telah berjalan. Method tersebut akan
memberikan nilai kembalian berupa jarak tempuh Hewan.

interface Hewan {

double berjalan(double jam);


}

Perhatikan, pada definisi interface Hewan di atas, method berjalan tidak memiliki
body: tidak diawali dan ditutup dengan { }, serta tidak memiliki statement apapun,
melainkan langsung diikuti dengan titik koma.

Untuk memastikan bahwa semua hewan bisa berjalan, anda membuat suatu kelas
konkrit (bisa diinstantiasi, misalnya dengan menggunakan keyword new) dari
hewan, misalnya Kuda, dengan mengimplementasikan interface Hewan tersebut.
Untuk membuat suatu kelas yang merupakan implementasi dari interface, anda
menggunakan kata kunci implements, diikuti dengan nama interface yang
diimplementasikan.
class Kuda implements Hewan {

public double berjalan(double jam) {


// Kecepatan kuda berjalan adalah sekitar 88 km/jam
// (http://www.speedofanimals.com/animals/horse)
return 88 * jam;
}
}

Misalnya anda membuat juga kelas Siput, yang mengimplementasikan interface


Hewan sebagai berikut.
class Siput implements Hewan {

public double berjalan(double jam) {


// Kecepatan siput berjalan adalah sekitar 0.1 km/jam
// (http://www.speedofanimals.com/animals/garden_snail)
return 0.1 * jam;
}
}

Dengan menggunakan kata kunci implements, anda akan dipaksa untuk


mengimplementasikan, yaitu membuat definisi langkah-langkah dari method-
method yang ada pada interface. Dengan demikian, kita dapat memastikan bahwa
suatu kelas yang mengimplementasikan interface tersebut akan memiliki satu set
method yang standar. (Kita dapat juga mendefinisikan method-method lain, tapi yang
pasti, karena Kuda adalah implementasi dari Hewan, kita mengetahui bahwa seekor
objek Kuda pasti bisa berjalan.)

Mari kita coba menjalankan method berjalan pada kelas Kuda dan Siput sebagai
berikut.
class HewanTest {

public static void main(String[] args) {

Hewan seekorKuda = new Kuda();


Hewan seekorSiput = new Siput();

double waktuTempuh = 1.5;


System.out.println("Setelah berjalan selama "
+ waktuTempuh + " jam:");
System.out.printf("%s telah menempuh jarak sejauh %.2f km\n",
seekorKuda.getClass().getSimpleName(),
seekorKuda.berjalan(waktuTempuh));
System.out.printf("%s telah menempuh jarak sejauh %.2f km\n",
seekorSiput.getClass().getSimpleName(),
seekorSiput.berjalan(waktuTempuh));
}
}

Pertanyaan 1:

a. Bagaimanakah keluaran dari kelas Hewan Test tersebut?


b. Jelaskan dengan singkat dan sederhana mengenai interface dari sumber yang anda
dapatkan di Internet.

2. Hierarki Java Collection

Hierarki dari interface dan kelas yang tergabung dalam Java Collection digambarkan pada
Bagan 1 berikut ini.

Bagan 1. Struktur Hierarki Interface dan Kelas pada Java Collection


Pada modul ini kita akan bereksperimen dengan interface Set dan List, dengan
implementasi konkret masing-masing yaitu kelas HashSet, TreeSet, dan ArrayList.
Kita juga akan bereksperimen dengan interface Map, dengan implementasi konkret
HashMap dan TreeMap.

3. Membaca Isi File

Java 7 memperkenalkan metode-metode baru untuk I/O, diantaranya untuk membaca file.
Here’s a script you can use to read the contents of a file, Java 7 – style.
import java.io.BufferedReader;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

class ReadFile {

public static void main(String[] args) {

Path text = Paths.get("E:\\temp\\Belajar Pemrograman.txt");

try (BufferedReader br =
Files.newBufferedReader(text, StandardCharsets.UTF_8)) {

String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}

} catch (IOException e) {
System.out.println(e.getMessage());
}

}
}

Script di atas akan membaca, baris per baris, isi dari file "E:\\temp\\Belajar
Pemrograman.txt", dan menyimpannya pada String line. Pada script di atas,
"E:\\temp\\Belajar Pemrograman.txt" dapat anda ganti dengan path menuju file
apapun yang anda ingin baca. Bagian System.out.println(line); dapat anda isi
dengan serangkaian perintah yang anda inginkan. Sintaks try di atas disebut metode
try-with-resource. Dengan sintaks tersebut, koneksi dari Java ke file akan tertutup
secara otomatis setelah file selesai dibaca, sehingga anda tidak perlu menutup secara
manual.
4. Set dan List

Karakteristik utama dari kelas-kelas yang merupakan implementasi dari interface Set adalah
data yang tersimpan pada instans dari objek tersebut tidak dapat sama; dengan kata lain,
seluruh isinya bersifat unik. Pada kelas-kelas yang merupakan implementasi dari interface
List, data yang tersimpan boleh sama satu sama lain, karena pengaksesannya dilakukan
seperti pada array, yaitu dengan indeks dari data.

Perhatikan isi dari file “Belajar Pemrograman.txt” berikut ini.

Saya senang sekali belajar pemrograman


Meskipun pertama kali terasa agak sulit
namun ternyata menulis program itu menantang dan seru
Kunci dari belajar pemrograman menurut saya
adalah kita harus telaten dan banyak berlatih

Pada eksperimen ini, kita akan membaca isi dari file tersebut, memotong tiap baris dari isi file
menjadi kata-kata, dan memasukkan kata-kata tersebut ke dalam implementasi dari Set dan
List, yaitu, HashSet, TreeSet, dan HashList. Setelah itu, kita akan mengamati isi dari masing-
masing kelas yang dipergunakan untuk menyimpan kata-kata dalam file.

Untuk itu, buatlah script di bawah ini, lalu amati keluarannya.


import java.io.BufferedReader;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;

class ReadFile {

public static void main(String[] args) {

Set<String> myHashSet = new HashSet<>();


Set<String> myTreeSet = new TreeSet<>();
List<String> myArrayList = new ArrayList<>();

Path text = Paths.get("Belajar Pemrograman.txt");


try (BufferedReader br = Files.newBufferedReader(text,
StandardCharsets.UTF_8)) {
String line;

while ((line = br.readLine()) != null) {


System.out.println(line);
String[] words = line.toLowerCase().split(" ");

// Memasukkan kata ke dalam HashSet


System.out.print("Adding to HashSet : ");
for (String word : words) {
System.out.print(myHashSet.add(word) + " ");
}
System.out.println();

// Memasukkan kata ke dalam TreeSet


System.out.print("Adding to TreeSet : ");
for (String word : words) {
System.out.print(myTreeSet.add(word) + " ");
}
System.out.println();

// Memasukkan kata ke dalam ArrayList


System.out.print("Adding to ArrayList: ");
for (String word : words) {
System.out.print(myArrayList.add(word) + " ");
}
System.out.println();

System.out.println();
}
System.out.println();

// Mencetak isi myHashSet


System.out.println(myHashSet);

// Mencetak isi myTreeSet


System.out.println(myTreeSet);

// Mencetak isi myArrayList


System.out.println(myArrayList);

} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}

Pertanyaan 2:

a. Jelaskan dengan singkat dan sederhana dari sumber yang anda dapatkan di Internet
mengenai:
• HashSet
• TreeSet
• ArrayList
b. Jelaskan keluaran yang anda amati dari script di atas. Apa arti true dan false pada
keluaran? Apa beda dari isi pada HashSet, TreeSet, dan ArrayList?

5. Map

Map adalah interface pada Java Collection yang menyimpan nilai-nilai berupa pasangan
<Key, Value>.

Misalnya, anda memiliki data nama dan usia sebagai berikut.

Nama Fathy Haikal Reyna Auf Nayya


Usia 9 3 4 2 2

Anda dapat menyimpan data tersebut ke dalam suatu implementasi dari Map, misalnya
HashMap dan TreeMap. Dengan demikian, anda dapat menyimpan nama-nama tersebut
sebagai kunci, dan usia dari nama tersebut sebagai value. Anda kemudian dapat mengakses
nilai usia berdasarkan namanya, misalkan aMap.get(“Haikal”) akan mengembalikan nilai 2.

Berikut ini adalah contoh script penyimpanan data dengan menggunakan kelas HashMap.

import java.util.HashMap;
import java.util.Map;

class MapExample {

public static void main(String[] args) {

Map<String, Integer> myHashMap = new HashMap<>();

myHashMap.put("Fathy", 9);
myHashMap.put("Reyna", 4);
myHashMap.put("Haikal", 3);
myHashMap.put("Auf", 2);
myHashMap.put("Nayya", 2);

for (String nama : myHashMap.keySet()) {


System.out.println(nama + "\t: " + myHashMap.get(nama));
}
}
}
Pertanyaan 3:

a. Amati keluaran dari kelas di atas. Lalu, ganti “HashMap” dengan “TreeMap”.
Jalankan kembali program, dan amati keluarannya. Adakah perbedaan antara
keluaran yang dihasilkan?
b. Jelaskan dengan singkat dan sederhana dari sumber yang anda dapatkan di Internet
mengenai HashMap dan TreeMap.

Tugas:
Jawablah pertanyan-pertanyaan 1, 2, dan 3 di atas, dan tuliskanlah jawaban tersebut pada
sebuah laporan singkat.

Tugas ini bersifat dalam kelompok, masing-masing MAKSIMAL 3 orang, dan dikumpulkan
minggu depan.

Have fun experimenting! J

Anda mungkin juga menyukai