MODUL
Pemrograman Komputer 2
D IV TEKNIK INFORMATIKA
POLITEKNIK HARAPAN BERSAMA
MODUL
Pemrograman Komputer 2
BAB I
COLLECTION
1.1. Collection
Collection atau koleksi merupakan sebuah objek yang mewakili kumpulan dari suatu objek
(biasa disebut dengan item). Kumpulan ini bisa bersifat homogen atau heterogen. Java Collection
framework ini dapat digunakan untuk memanipulasi (menambah, menghapus, mengubah) dan
mengurutkan sekumpulan objek serta dapat digunakan untuk proses pencarian sekumpulan objek
dalam koleksi tersebut. Hirarki dari Collection memiliki beberapa sub-interfacce dan beberapa class
yang mengimplementasikannya, seperti terlihat pada Gambar berikut:
<interface>
Collection
implements implements
<Interfaces> Classes
AbstractCollection, AbstractList, AbstractQueue,
BeanContext,
AbstractSequentialList, AbstractSet, ArrayBlockingQueue,
BeanContextServices,
ArrayDeque, ArrayList, AttributeList,
BlockingDeque<E>,
BeanContextServicesSupport, BeanContextSupport,
BlockingQueue<E>,
ConcurrentHashMap.KeySetView, ConcurrentLinkedDeque,
Deque<E>, List<E>,
ConcurrentLinkedQueue, ConcurrentSkipListSet,
NavigableSet<E>,
CopyOnWriteArrayList, CopyOnWriteArraySet, DelayQueue,
Queue<E>, Set<E>,
EnumSet, HashSet, JobStateReasons, LinkedBlockingDeque,
SortedSet<E>,
LinkedBlockingQueue, LinkedHashSet, LinkedList,
TransferQueue<E>
LinkedTransferQueue, PriorityBlockingQueue, PriorityQueue,
RoleList, RoleUnresolvedList, Stack, SynchronousQueue,
TreeSet, Vector
Framework collection ini didesain dengan sentuhan arsitektur yang sangat mumpuni.
Framework ini berisi antara lain:
A. Interface. Merupakan tipe data abstract dari collection. Interface memungkinkan sebuah
collection melakukan manipulasi secara bebas.
B. Implementasi. Merupakan implementasi konkret dari interface collection.
C. Algoritma. Merupakan metode untuk melakukan komputasi seperti pencarian dan pengurutan
pada objek yang mengimplementasi interface collection.
1.2.1 List
List merupakan objek dengan model double link list, dimana kita dapat menampahkan objek
yang berbeda ke dalamnya. List merupakan kumpulan objek yang terurut (biasa disebut dengan
sequence). Pengguna interface ini (list) memiliki kontrol yang tepat terhadap setiap elemen yang telah
dimasukkan ke dalam list. Pengguna dapat mengakses elemen dengan indeks dari masing-masing
elemen (posisi dalam list), dan mencari elemen dalam list. Untuk dapat menggunakan objek List, kita
diharuskan melakukan impor paket java.util.List.
Untuk mengakses data yang ada di dalam Set, kita dapat menggunakan beberapa cara,
diantaranya adalah dengan menggunakan proses looping (perulangan) sebagai berikut:
Cara ke-1:
for (Object elemen : set) {
System.out.println(elemen);
}
Cara ke-2:
set.forEach((elemen) -> {
System.out.println(elemen);
});
Apabila kita memasukkan objek atau data yang sama ke dalam sebuah Set, maka data
tersebut tidak akan disimpan dalam Set. Ilustrasinya sebagai berikut:
1.2.3 Map
Map merupakan objek dengan model seperti List, tetapi kita memerlukan key atau kunci
untuk memaasukkan atau menambahkan data ke dalam sebuah Map. Untuk dapat menggunakan objek
Map ini, kita diharuskan untuk melakukan impor paket java.util.Map. Beberapa metode atau
cara yang dapat digunakan untuk mengoperasikan Map diantaranya adalah sebagai berikut:
Untuk mengetahui jumlah data yang telah tersimpan dalam sebuah objek Map, kita dapat
menggunakan fungsi size() yang telah tersedia pada interface Map. Lihat contoh berikut:
Karena objek Queue ini mengadopsi pendekatan FIFO maka proses penghapusan di atas akan
menghapus data pada elemen atau data yang pertama dimasukkan ke dalam Queue. Selain
menggunalan fungsi elemen(), untuk mendapatkan elemen dari Queue juga dapat digunakan
fungsi peek(). Selain itu, dalam object Queue juga disediakan fungsi poll(), fungsi ini
digunakan untuk mengambil head queue dan juga sekaligus menghapusnya. Untuk lebih jelasnya
lihat contoh berikut:
Untuk dapat mengakses data dalam Stack kita juga dapat menggunakan beberapa fungsi
yang telah disediakan oleh kelas Stack sebagai berikut:
A. Fungsi firstElement(). Digunakan untuk mendapatkan nilai objek pada indeks ke 0
dalam Stack (bukan tumpukan paling atas dalam Stack).
B. Fungsi peek(). Digunakan untuk mendapatkan nilai objek pada tumpukan paling atas
dalam Stack tanpa menghapus objek tersebut dari Stack.
C. Fungsi pop(). Digunakan untuk mendapatkan nilai objek pada tumpukan paling atas
dalam Stack sekaligus menghapus objek tersebut dari dalam Stack.
Untuk menghapus objek dalam Stack dapat digunakan fungsi remove(), fungsi ini
memiliki 2 (dua) parameter yaitu Object dan int (indeks). Sehingga, pengguna dapat melakukan
penghapusan data berdasarkan nilai objek atau indeks dari objek tersebut. Untuk lebih detailnya
sebagai berikut:
Selanjutnya, dengan langkah-langkah di atas buatlah 4 paket baru dengan nama set, map,
queue, dan stack sehingga sususan project menjadi seperti terlihat pada Gambar 1.2.
Setelah form selesai dibuat, maka struktur project menjadi seperti pada Gambar 1.3.
Selanjutnya, desainlah form menggunakan palette sehingga antarmuka menjadi seperti terlihat pada
Gambar 1.4.
Catatan:
Untuk mengubah nama variabel, klik kanan pada komponen yang akan diubah nama
variabelnya isikan nama variabel klik Ok.
2. Double klik tombol/button Tambahkan Objek atau klik kanan tombol/button Tambahkan
Objek pilih Events pilih Action pilih actionPerformed, kemudian ubah kode
programnya hingga menjadi seperti berikut:
4. Double klik tombol/button Hapus Objek atau klik kanan tombol/button Hapus Objek
pilih Events pilih Action pilih actionPerformed, kemudian ubah kode programnya
hingga menjadi seperti berikut:
1.3.4. Set
Pada bagian ini kita akan praktik menggunakan objek Set. Sebelum menggunakan objek
Set, terlebih dahulu buatlah sebuah kelas baru (TestSet) dengan mengikuti langkah-langkah sebagai
berikut:
4. Klik kanan pada package set New Java Class. Selanjutnya Netbeans akan
menampilkan dialog untuk membuat kelas baru (dialog New Java Class).
5. Pada field Class Name, isikan TestSet
6. Klik Finish
Setelah class selesai dibuat, selanjutnya ubah kode program sehingga menjadi seperti kode
berikut:
Setelah class selesai dibuat, selanjutnya ubah kode program sehingga menjadi seperti kode
berikut:
Setelah class selesai dibuat, selanjutnya ubah kode program sehingga menjadi seperti kode
berikut:
Setelah class selesai dibuat, selanjutnya ubah kode program sehingga menjadi seperti kode
berikut:
Pada penggalan kode di atas, variabel listV dapat diisi dengan berbagai tipe data
(objek). Hal ini akan berdampak buruk ketika kita hendak melakukan manipulasi data,
dikarenakan kepastian tipe data yang dimasukkan dalam collection List bersifat tidak
konsisten. Untuk mengatasi permasalahan tersebut dapat menggunakan generic sebagai
solusinya. Pada Java, kita dapat mendeklarasikan generic dengan simbol sebagai berikut:
<E> : untuk elemen dari sebuah collection
<T> : untuk tipe
<K, V> : untuk key dan value
<N> : untuk number
S,U,V : digunakan untuk parameter ke 2, 3, 4
Ilustrasi: Membuat kelas generic dengan nama “MyGeneric”, kemudian untuk melakukan
pengujian dibuat kelas baru dengan nama “MyGenericTest”. Pada kelas
“MyGenericTest” dilakukan pengujian dengan 2 generic tipe data, yaitu “Integer” dan
“String”.
T getob() {
return ob;
}
void showType() {
System.out.println("Tipe T adalah"+
ob.getClass().getName());
}
}
int v = iOb.getob();
System.out.println("value : "+v);
System.out.println();
MyGenericMethod.showData(numbers);
MyGenericMethod.showData(objects);
}
}
Pada kode di atas, dideklarasikan elemen generic <E> atau juga bisa menggunakan generic
<T> pada method showData(). Berikutnya, dideklarasikan sebuah array objects dan
numbers kemudian diisi dengan data sampel. Setelah itu, dilakukan pemanggilan method
showData() untuk menampilkan data pada array objects dan numbers.
Contoh:
List<Object> o = new ArrayList<Object>();
List<Integer> i = new ArrayList<Integer>();
Contoh:
public class GeneicType {
public static <E extends Comparable<E>> void
bubbleSort(E[] list){
boolean flag = true;
E temp;
while (flag) {
flag = false;
for (int j = 0; j < list.length-1; j++) {
if(list[j].compareTo(list[j+1]) > 0){
temp = list[j];
list[j] = list[j+1];
list[j+1] = temp;
flag = true;
}
}
}
}
Contoh:
public class UnboundedWildcrad {
2.6. Praktik
2.6.1. Membuat Projek Baru
Untuk membuat project baru di Netbeans ikuti langkah-langkah berikut:
1. Klik menu File New Project, selanjutnya akan terbuka dialog New Project
2. Pada dialog New Project, untuk Categories pilih Java, dan untuk jenis Projects pilih
Java Application klik Next untuk melanjutkan ke tahapan berikutnya.
3. Pada dialog New Java Application, isi field dan pilihan yang ada sebagai berikut:
A. Project Name : GenericImpl
B. Project Location : Lokasi opsional, sesuai dengan keinginan anda
C. Project Folder : Otomatis oleh Netbeans IDE
D. Create Main Class : Hilangkan centang pada checkbox
4. Klik Finish
1 2 3 4 5
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
@Override
public int getRowCount() {
return list.size();
}
@Override
public int getColumnCount() {
return 2;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
switch(columnIndex){
case 0 : return list.get(rowIndex).getFileName();
case 1 : return list.get(rowIndex).getFileSize();
default: return null;
}
}
4. Klik kanan pada tombol Add Folder pilih Events pilih Action
pilih actionPerformed tambahkan kode program, sehingga kode
program akan terlihat seperti pada gambar 2.8.
5. Klik kanan pada tombol Clear Playlist pilih Events pilih
Action pilih actionPerformed tambahkan kode program,
sehingga kode program akan terlihat seperti pada gambar 2.9.
6. Klik kanan pada Tabel pilih Events pilih Mouse pilih
MouseClicked tambahkan kode program, sehingga kode program akan
terlihat seperti pada gambar 2.10.
7. Klik kanan pada tombol View Detail pilih Events pilih Action
pilih actionPerformed tambahkan kode program, sehingga kode
program akan terlihat seperti pada gambar 2.11.
Gambar 2.11 Kode untuk Melihat Detail Elemen atau Item dalam Koleksi