Makalah ADT Statis
ADT STATIS : SORTING PADA
COLLECTION, SET(HIMPUNAN), DAN ARRAYLIST
MAKALAH
Diajukan untuk memenuhi
salah satu tugas Mata Kuliah Struktur Data
Dosen Matakuliah : Ichsan
Taufik, MT.
Kelas A
Oleh
Kelompok 2
Aji Zulkifli
Ramdani 1177050011
Muhammad Ridhwan
R 1177050124
Muhammad Rifa A 1177050075
Nida Luthfi
Awaliyah 1177050078
Pebri Alkautsar 1177050085
Triana
Ridhaswari 1177050116
JURUSAN TEKNIK
INFORMATIKA
FAKULTAS SAINS DAN
TEKNOLOGI
UNIVERSITAS ISLAM NEGERI
SUNAN GUNUNG DJATI
BANDUNG
2018
KATA
PENGANTAR
Puji syukur kami
panjatkan kepada Allah Yang Maha Esa. Karena berkat Rahmat, Taufik dan
Hidayah-Nya kami dapat menyusun dan menyelesaikan makalah yang berjudul “ADT Statis: Sorting pada Collection,
Set(Himpunan) dan ArrayList” ini tepat pada waktunya.
Juga pada
kesempatan ini kami mengucapkan terima kasih kepada Bapak Ichsan Taufik, MT. selaku Dosen dalam Mata Kuliah Struktur
Data, dan juga kepada pihak yang telah memberikan arahan, petunjuk dan
bimbingan sehingga kami dapat menyelesaikan makalah ini.
Tujuan utama dari
makalah ini adalah untuk memenuhi
salah satu tugas Mata Kuliah Struktur Data. Selain itu, makalah ini juga dibuat untuk memberikan
ilmu dan wawasan tentang ADT Statis : Sorting pada
Collection, Set(Himpunan) dan ArrayList. Untuk itu, semoga makalah ini dapat bermanfaat bagi para pembaca.
Bandung,
02 November 2018
Kelompok
2
DAFTAR ISI
KATA PENGANTAR.............................................................................................i
DAFTAR ISI............................................................................................................ii
BAB I : PENDAHULUAN......................................................................................1
A. Latar
Belakang.......................................................................................1
B. Rumusan
Masalah..................................................................................1
C. Tujuan....................................................................................................1
BAB II : PEMBAHASAN.......................................................................................2
A. Pengertian
Tipe Data Abstrak................................................................2
B. Pengertian
Collection.............................................................................2
C. Set
(Himpunan) .....................................................................................3
1. HashSet......................................................................................3
2. TreeSet.......................................................................................5
3. Linked
HashSet..........................................................................6
4. EnumSet.....................................................................................7
D. ArrayList................................................................................................8
E. Perbedaan
HashSet, TreeSet,
LinkedHashSet, EnumSet dan
ArrayList..............................................................................................12
F. Sorting
Pada Collection........................................................................12
BAB III : PENUTUP.............................................................................................16
A. Kesimpulan..........................................................................................16
B. Kritik
& Saran......................................................................................16
DAFTAR PUSTAKA
BAB I
PENDAHULUAN
A.
Latar
Belakang
Tipe Data Abstrak
atau lebih dikenal dalam bahasa Inggris sebagai Abstract Data Type (ADT)
merupakan model matematika yang merujuk pada sejumlah bentuk struktur data yang
memiliki kegunaan atau perilaku yang serupa atau suatu tipe data dari suatu
bahasa pemrograman yang memiliki sematik yang serupa. Tipe data abstrak umumnya
didefinisikan tidak secara langsung, melainkan hanya melalui operasi matematis
tertentu sehingga membutuhkan penggunaan tipe data tersebut meski dengan resiko
kompleksitas yang lebih tinggi atas operasi tersebut. Merupakan hal yang sangat
penting untuk mengenali bahwa operasi-operasi yang akan dimanipulasi data pada
objek yang bersangkutan termuat dalam spesifikasi ADT.
ADT dibagi menjadi
dua jenis yaitu yang bersifat Dinamis dan yang bersifat statis,dalam makalah
kali ini akan membahas tetang ADT statis, dimana ADT statis maksudnya adalah
tipe data yang sifatnya statis.
B.
Rumusan Masalah
1.
Apa yang dimaksud dengan
Tipe Data Abstrak?
2.
Apa yang dimaksud dengan
Collection?
3.
Apa yang dimaksud dengan
Set dan jenis-jenisnya?
4.
Bagaimana car menggunakan
Set?
5.
Apa yang dimaksud dengan
ArrayList?
6.
Bagaimana cara
menggunakan ArrayList?
7.
Apa perbedaan antara Set
dan ArrayList?
C.
Tujuan
1.
Untuk
mengetahui Tipe Data Abstrak.
2.
Untuk mengetahui
Collection.
3.
Untuk mengetahui Set,
jenis Set dan kegunaannya.
4.
Untuk mengetahui ArrayList
dan kegunaannya.
5.
Untuk mengetahui
perbedaan antara set dan ArrayList.
BAB
II
PEMBAHASAN
A.
Pengertian Tipe Data Abstrak
Tipe
data abstrak dalam bahasa inggris disebut dengan Abstract Data Type (ADT)
adalah sebuah model matematika yang merujuk pada sejumlah bentuk struktur data
yang mempunyai kegunaan maupun prilaku yang sama, atau juga suatu tipe data
dari sebuah bahasa pemrograman yang memiliki sematik yang sama. Tipe data
abstrak juga dikenal dengan tipe data bentukan. Umumnya, tipe data abstrak
didefinisikan melalui operasi matematis tertentu sehingga membutuhkan
penggunaan tipe data tersebut meski dengan resiko kompleksitas yang lebih
tinggi atas operasi tersebut. Contoh dari tipe data abstrak adalah Stack, Queue
dan List. Berikut pengertian ADT menurut beberapa sumber :
1.
Spesifikasi
dari sekumpulan data termasuk operasi yang dapat dilakukan pada data tersebut. (Wikipedia)
2.
Sekumpulan
data dan operasi terhadap data tersebut yang definisi-nya tidak bergantung pada
implementasi tertentu. (/www.nist.gov/dads/)
B.
Pengertian Collection
Koleksi adalah sekelompok objek individual
yang direpresentasikan sebagai satu kesatuan. Java menyediakan Kerangka Koleksi
yang mendefinisikan beberapa kelas dan antarmuka untuk mewakili sekelompok
objek sebagai satu kesatuan.
Collection adalah
sebuah framework yang dibuat untuk menyimpan dan memanipulasi sebuah objek.
Collection biasanya digunakan pada sebuah data seperti mencari, meng-urutkan,
meng-input dan menghapus. Kerangka kerja (Framework) menyediakan dalam bentuk
Interface (contoh : Set, List, Queue, Deque dll). untuk class (ArrayList,
Vector, LingkedList, PriorityQueue, HashSet, LinkedHashSet, TreeSet dll).
Gambar berikut adalah hirarki pada java collection :
C.
Set (Himpunan)
Set (Himpunan) merupakan
collection yang tidak dapat memuat elemen yang sama sebanyak dua kali atau
lebih. Interface set memuat beberapa metoda yang di warisinya dari collection
dan menambahkan batasan untuk mencegah masuknya elemen yang sama. Interface set
juga mendefinisikan ulang perilaku operasi-operasi equals() dan hashCode(),
dimana hal ini memungkinkan elemen-elemen pada set di bandingkan secara lebih
bermakna meski implementasi tipe data elemen-elemennya berbeda. Sesungguhnya,
dua objek set dikatakan sama jika mereka masing-masing memiliki elemen-elemen
yang bernilai sama di dalamnya.
Platform java yang di
spesifikasi dalam JDK (Java
Development Kit) memuat 3 jenis implementasi interface Set, yaitu: HashSet,
TreeSet, dan LinkedHashSet. HashSet yang menyimpan elemen-elemen dalam tabel hash,
merupakan implementasi yang memiliki kinerja paling baik. Meski demikian ia
tidak dapat menjamin hal-hal yang berkaitan dengan urutan elemen-elemen di
dalamnya.
1.
HashSet
HashSet class adalah
anggota dari framework koleksi Java. Ini mengimplementasikan Set Interface. HashSet digunakan untuk
menyimpan koleksi elemen unik. Berikut
adalah beberapa poin penting yang perlu diperhatikan tentang HashSet di Java :
·
HashSet tidak dapat
berisi nilai duplikat.
·
HashSet memungkinkan nilai null.
·
HashSet adalah koleksi
tidak berurutan. Itu tidak menjaga urutan di mana elemen-elemen disisipkan.
·
HashSet secara internal
menggunakan HashMap untuk menyimpan elemen-elemennya.
·
HashSet tidak
aman-thread. Jika beberapa utas mencoba memodifikasi HashSet secara bersamaan,
maka hasil akhirnya tidak bersifat deterministik.
Contoh
HashSet :
import
java.util.*;
public
class CreateHashSetExample {
public static void main(String[] args) {
// Creating a HashSet
HashSet<String> daysOfWeek = new
HashSet<>();
// Adding new elements to the HashSet
daysOfWeek.add("Monday");
daysOfWeek.add("Tuesday");
daysOfWeek.add("Wednesday");
daysOfWeek.add("Thursday");
daysOfWeek.add("Friday");
daysOfWeek.add("Saturday");
daysOfWeek.add("Sunday");
// Adding duplicate elements will be
ignored
daysOfWeek.add("Monday");
System.out.println(daysOfWeek);
}
}
#
Output
[Monday,
Thursday, Friday, Sunday, Wednesday, Tuesday, Saturday]
2.
TreeSet
TreeSet adalah salah satu
implementasi terpenting dari interface
SortedSet di Java yang menggunakan Tree untuk penyimpanan. Urutan unsur-unsur
dipertahankan oleh satu set menggunakan pemesanan alami mereka apakah
komparator eksplisit disediakan atau tidak. Ini harus konsisten dengan yang
sama jika itu benar menerapkan interface
Set. Ini juga dapat dipesan oleh Comparator yang disediakan pada waktu
pembuatan yang ditetapkan, tergantung pada konstruktor mana yang digunakan. TreeSet
mengimplementasikan interface
NavigableSet dengan mewarisi kelas AbstractSet. Beberapa fitur penting dari
TreeSet adalah sebagai berikut:
·
TreeSet
mengimplementasikan antarmuka SortedSet sehingga nilai duplikat tidak
diizinkan.
·
Objek dalam TreeSet disimpan
dalam urutan yang disortir dan menaik.
·
TreeSet tidak
mempertahankan urutan penyisipan elemen tetapi elemen diurutkan berdasarkan
kunci.
·
TreeSet tidak
memungkinkan untuk memasukkan objek heterogen. Ini akan membuang
classCastException di Runtime jika mencoba menambahkan objek hetrogeneous.
·
TreeSet berfungsi sebagai
pilihan yang sangat baik untuk menyimpan sejumlah besar informasi yang disortir
yang seharusnya dapat diakses dengan cepat karena aksesnya yang lebih cepat dan
waktu pengambilan.
·
TreeSet pada dasarnya
adalah implementasi dari pohon pencarian biner self-balancing seperti Red-Black
Tree . Oleh karena itu operasi seperti menambah, menghapus dan mencari waktu O
(Log n). Dan operasi seperti mencetak n elemen dalam urutan yang disortir membutuhkan
waktu O (n).
Contoh Tree Set :
import
java.util.*;
class
TestCollection11{
public
static void main(String args[]){
//Creating
and adding elements
TreeSet<String> al=new
TreeSet<String>();
al.add("Ravi");
al.add("Vijay");
al.add("Ravi");
al.add("Ajay");
System.out.println(“Ascending : “+al);
TreeSet<String>
alreverse = new TreeSet<String>(al);
alreverse =
(TreeSet<String>)al.descendingSet();
System.out.println(“Descending : “+alreverse);
}
} #Output :
Ascending : [Ajay, Ravi, Vijay]
Descending : [Vijay, Ravi, Ajay]
3.
Linked HashSet
Linked HashSet adalah versi terurut dari
HashSet yang menyimpan Daftar terkait ganda di semua elemen. Ketika urutan
iterasi diperlukan untuk dipertahankan kelas ini digunakan. Ketika iterasi
melalui HashSet, urutannya tidak dapat diprediksi, sementara LinkedHashSet
memungkinkan kita melakukan iterasi melalui elemen-elemen dalam urutan di mana
mereka disisipkan. Ketika megurutkan melalui
LinkedHashSet menggunakan iterator, elemen-elemen akan dikembalikan dalam
urutan di mana mereka dimasukkan.
Contoh
Linked HashSet:
import
java.util.LinkedHashSet;
public
class LinkedHashSetExample {
public static void main(String args[]) {
// LinkedHashSet of String Type
LinkedHashSet<String> lhset =
new LinkedHashSet<String>();
// Adding elements to the
LinkedHashSet
lhset.add("Z");
lhset.add("PQ");
lhset.add("N");
lhset.add("O");
lhset.add("KK");
lhset.add("FGH");
System.out.println(lhset);
}
}
#Output:
[Z, PQ, N,
O, KK, FGH]
4.
EnumSet
EnumSet
adalah salah satu implementasi khusus dari Set interface untuk digunakan dengan
tipe enumerasi. Beberapa fitur penting EnumSet adalah sebagai berikut:
·
Memperluas AbstractSet
dan mengimplementasikan Set Interface di Java.
·
Kelas EnumSet adalah
anggota Java Collections Framework & tidak disinkronkan.
·
Ini adalah implementasi
set performa tinggi, jauh lebih cepat daripada HashSet.
·
Semua elemen dalam set
enum harus berasal dari tipe enumerasi tunggal yang ditentukan ketika set
dibuat baik secara eksplisit atau implisit.
Contoh EnumSet :
// Java program to illustrate working of EnumSet and its functions.
import java.util.EnumSet;
enum Gfg
{
CODE, LEARN, CONTRIBUTE, QUIZ, MCQ
};
public class Example
{
public static void main(String[]
args)
{
// Membuat Set
EnumSet<Gfg> set1,
set2, set3, set4;
// Menambah elemen
set1 =
EnumSet.of(Gfg.QUIZ, Gfg.CONTRIBUTE,
Gfg.LEARN,
Gfg.CODE);
set2 =
EnumSet.complementOf(set1);
set3 =
EnumSet.allOf(Gfg.class);
set4 =
EnumSet.range(Gfg.CODE, Gfg.CONTRIBUTE);
System.out.println("Set
1: " + set1);
System.out.println("Set
2: " + set2);
System.out.println("Set
3: " + set3);
System.out.println("Set
4: " + set4);
}
}
#Output :
Set 1: [CODE, LEARN, CONTRIBUTE, QUIZ]
Set 2: [MCQ]
Set 3: [CODE, LEARN, CONTRIBUTE, QUIZ, MCQ]
Set 4: [CODE, LEARN, CONTRIBUTE]
Metode pada EnumSet :
§ EnumSet.range(E from, E to): menampilkan elemen berdasarkan
titik awal dan akhir yang sudah ditentukan
D.
ArrayList
ArrayList
adalah sebuah kelas yang dapat melakukan penyimpanan data berupa list objek
berbentuk array yang ukurannya dapat berubah secara dinamis sesuai dengan
jumlah data yang dimasukkan. Berbeda dengan array biasa, ArrayList memiliki
sejumlah operasi yang lebih lengkap dan mudah digunakan dibandingkan dengan
array biasa. ArrayList merupakan collection yang menjadi bagian dari java.util. Perbedaan paling mendasar
antara Array dan ArrayList adalah:
·
Untuk menyimpan data
dalam array biasa, maka harus mendeklarasikan jumlah elemen maksimal yang bisa
menampung. Dengan kata lain jika jumlah datanya fleksibel, maka array tidak
bisa digunakan.
·
ArrayList dapat menampung
sejumlah data secara dinamis, sehingga seberapapun jumlahnya akan ditampung
oleh ArrayList tanpa memperhatikan berapa jumlah maksimal elemen yang dapat ditampung.
Berbagai operasi yang dapat lakukan terhadap
ArrayList seperti berikut:
·
size(), untuk mencari
panjang ArrayList
·
add(), untuk menambah
elemen baru
·
get(), untuk mengambil
elemen pada indeks tertentu
·
isEmpty(), untuk
memeriksa apakah ArrayList kosong atau tidak
·
indexOf(), untuk
mengetahui indeks dari suatu nilai
·
contains(), untuk
memeriksa apakah suatu nilai ada dalam ArrayList
·
set(), untuk menimpa
nilai pada indeks tertentu
·
remove(), untuk menghapus
nilai pada indeks tertentu
Metode pada ArrayList:
•
daftar.size() -- Fungsi
ini menghasilkan ukuran ArrayList saat ini. Posisi valid dalam daftar adalah
yang bernomor 0 hingga daftar.size().
•
daftar.add(obj) --
Menambah objek di akhir ArrayList, kemudian menambah ukurannya dengan 1.
Parameter obj merujuk pada objek dengan tipe apapun, atau bisa bernilai null.
•
daftar.get(N) --
Mengambil nilai yang disimpan pada posisi N pada ArrayList. N harus bertipe
bilangan bulat antara 0 hingga daftar.size() - 1.
•
daftar.set(N, obj) --
Mengisi suatu objek obj di posisi N dari suatu ArrayList, dan mengganti apapun
yang sudah disimpan sebelumnya pada posisi N.
•
daftar.remove(obj) --
Jika objek tersebut ada di dalam ArrayList, maka objek tersebut akan dibuang.
•
daftar.remove(N) -- Untuk
bilangan bulat N, maka perintah ini akan menghapus posisi ke-N pada ArrayList.
N harus berada pada rentang 0 hingga daftar.size() - 1.
•
daftar.indexOf(obj) --
Fungsi untuk mencari suatu objek obj di dalam ArrayList.
Seperti
dijelaskan sebelumnya, kelemahan dari Array konvensional adalah ukurannya harus
sudah ditentukan pada waktu deklarasi. Jika tipe data Array ini digunakan untuk
menyimpan data yang ukurannya tidak dapat ditentukan, tentunya akan sangat
repot untuk pendeklarasiannya. Java menambahkan library khusus untuk dapat
menyimpan kumpulan tipe data dengan ukuran yang dinamis, yaitu Collection.
Contoh ArrayList:
import java.util.*;
class JavaExample{
public static void main(String args[]){
ArrayList<String> alist=new ArrayList<String>();
alist.add("Steve");
alist.add("Tim");
alist.add("Lucy");
alist.add("Pat");
alist.add("Angela");
alist.add("Tom");
//displaying elements
System.out.println(alist);
//Adding "Steve" at the fourth position
alist.add(3, "Steve");
//displaying elements
System.out.println(alist);
//Removing "Steve" and
"Angela"
alist.remove("Steve");
alist.remove("Angela");
//displaying elements
System.out.println(alist);
//Removing 3rd element
alist.remove(2);
//Check size
System.out.println("Size : "+alist.size());
//displaying elements
System.out.println(alist);
}
}
#Output:
[Steve, Tim, Lucy, Pat, Angela, Tom]
[Steve, Tim, Lucy, Steve, Pat, Angela, Tom]
[Tim, Lucy, Steve, Pat, Tom]
Size : 4
[Tim, Lucy, Pat, Tom]
E.
Perbedaan
HashSet, TreeSet, LinkedHashSet,
EnumSet dan ArrayList
F.
Sorting
Pada Collection
java.util.Collections.sort () metode hadir di
kelas java.util.Collections. Ini digunakan untuk mengurutkan elemen yang ada
dalam daftar Koleksi yang ditentukan dalam urutan menaik.
Ia bekerja mirip dengan java.util.Arrays.sort
() metode tetapi lebih baik karena dapat
memilah unsur-unsur Array serta linked list, queue dan banyak lagi yang ada di dalamnya.
Contoh penggunaan Collections.sort ;
// Java program to
demonstrate working of Collections.sort()
import java.util.*;
public class
Collectionsorting
{
public static void main(String[] args)
{
// Menambahkan list string
ArrayList<String> al =
new ArrayList<String>();
al.add("Ravi");
al.add("Ajay");
al.add("Vijay");
al.add("Sonoo");
al.add("Hanumat");
// Menampilkan data sebelum
diurutkan
System.out.println("Sebelum
diurutkan : " + al);
// Megurutkan dengan
Collections.sort secara Ascending
Collections.sort(al);
//Menampilkan data sesudah
diurutkan
System.out.println("Sesudah
diurutkan (Ascending) : " + al);
//Secara Descending
Collections.sort(al,
Collections.reverseOrder());
//Menanmpilkan data sesudah
diurutkan
System.out.println("Sesudah
diurutkan (Descending) : " + al);
}
}
#Output :
Sebelum diurutkan : [Ravi,
Ajay, Vijay, Sonoo, Hanumat]
Sesudah diurutkan
(Ascending) : [Ajay, Hanumat, Ravi, Sonoo, Vijay]
Sesudah diurutkan
(Descending) : [Vijay, Sonoo, Ravi, Hanumat, Ajay]
Contoh mengurutkan HashSet dengan Collections.sort() :
import
java.util.*;
public
class CreateHashSetExample {
public
static void main(String[] args) {
// Membuat
HashSet
HashSet<String>
hs = new HashSet<String>();
hs.add("Ravi");
hs.add("Ajay");
hs.add("Vijay");
hs.add("Sonoo");
hs.add("Hanumat");
System.out.println(“Sebelum
diurutkan : “+hs);
//Mengubah
ke ArrayList
ArrayList<String>
al = new ArrayList<String>(hs);
//
Megurutkan dengan Collections.sort
Collections.sort(al);
System.out.println(“Sesudah
diurutkan : “+al);
}
}
# Output
Sebelum diurutkan : [Ravi, Ajay, Vijay, Sonoo, Hanumat]
Sesudah diurutkan : [Ajay, Hanumat, Ravi, Sonoo, Vijay]
Contoh mengurutkan HashSet dengan mengubahnya ke TreeSet :
import java.util.*;
public class Example {
public static void main(String[] args) {
// Membuat HashSet
HashSet<String> hs = new
HashSet<String>();
hs.add("Ravi");
hs.add("Ajay");
hs.add("Vijay");
hs.add("Sonoo");
hs.add("Hanumat");
System.out.println("Sebelum
diurutkan : "+hs);
//Mengubah ke TreeSet
TreeSet<String> ts = new
TreeSet<String>(hs);
System.out.println("Sesudah
diurutkan : "+ts);
}
}
# Output
Sebelum diurutkan : [Ravi, Ajay, Vijay, Sonoo, Hanumat]
Sesudah diurutkan : [Ajay, Hanumat, Ravi, Sonoo, Vijay]
BAB III
PENUTUP
A.
Kesimpulan
·
Collections adalah sekelompok objek individual
yang direpresentasikan sebagai satu kesatuan.
·
HashSet
tidak mempertahankan jenis urutan elemennya.
·
TreeSet
mengurutkan elemen dalam urutan menaik atau menurun.
·
LinkedHashSet
mempertahankan urutan penyisipan. Elemen diurutkan dalam urutan yang sama ketika
mereka
telah ditambahkan ke Set.
·
EnumSet menampilkan elemen yang sudah ditentukan terlebih
dahulu dan urutannya sesuai dengan yang aslinya.
·
ArrayList
mempertahankan urutan dan bisa
terdapat data duplikat
·
Pengurutan bisa menggunakan metode Collections.sort()
atau menggunakan TreeSet
·
HashSet dan Linked HashSet tidak bisa diurutkan langsung,
maka perlu dikonversi dahulu baik ke ArrayList atau ke TreeSet.
·
EnumSet tidak dapat diurutkan.
B.
Kritik dan Saran
Makalah ini masih banyak kekurangan dengan
kesalahan-kesalahan yang perlu diperbaiki. Oleh karena itu kami mengharapkan
masukan yang membangun guna perbaikan dalam penyajian makalah berikutnya.
DAFTAR PUSTAKA
https://id.wikipedia.org/wiki/Tipe_data_abstrak
https://www.javatpoint.com/java-arraylist
https://www.geeksforgeeks.org/collections-sort-java-examples/
https://www.geeksforgeeks.org/enumset-class-java/
https://www.javatpoint.com/java-treeset
https://www.callicoder.com/java-hashset/
https://www.javatpoint.com/java-linkedhashset
https://stackoverflow.com/questions/22391350/how-to-sort-a-hashset
https://www.tutorialspoint.com/java/util/treeset_descendingset
terimakasih sudah berkunjung
BalasHapusUntuk Bagian E tentang perbedaannya itu apa ?
BalasHapus