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.of(E e11, E el2, Eel3,E el4….): menampilkan set dengan elemen yg ditentukan
§  EnumSet.complementOf(EnumSet s): menampilkan elemen yang tidak ada pada set tersebut
§  EnumSet.allOf(Class elementType): menampilkan semua elemen yang ada
§  EnumSet.range(E from, E to): menampilkan elemen berdasarkan titik awal dan akhir yang sudah ditentukan
§  EnumSet.copyof(EnumSet s): meng-copy semua elemen pada set tersebut

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












Komentar

Posting Komentar

Postingan Populer