Tuesday, October 11, 2011

All Collection in Java

  No comments
Collection merupakan istilah umum yang dipakai untuk setiap objek yang berfungsi untuk mengelompokkan beberapa objek tertentu menggunakan suatu teknik tertentu pula. Semua class yang berhubungan dengan pengelompokan objek ini dalam java tergabung dalam Java Collection Framework, dimana Framework ini diletakan dalam package java.util dan mempunyai dua interface utama, yaitu collection dan map. Pada makalah ini hanya akan dibahas Collection

Jenis Pengelompokan Collectin ini merupakan pengelompokan satu dimensi. Berdasarkan teknik pengelompokannya terbagi menjadi tiga kelompok yaitu set, list, dan queue. Semua class dalam kelompok collection ini merupakan implementasi dari interface yang sama, maka pada dasarnya cara penggunan class ini adalah sama. Yang membedakannya hanyalah kapan kita harus menggunakannya karena hal ini sangat terkait dengan kebutuhan.

a.       Set merupakan pengelompokan mengikuti model himpunan dimana setiap anggota-nya harus unik. Urutan maupun letak dari anggotanya tidaklah penting, hanya keberadaan anggotanya saja yang penting.
Contoh dalam Program:

import java.util.*;

public class setCollection {
    public static void main(String[] args) {
    Set<String> set1 = new HashSet<String>();

    Collections.addAll(set1, "A B C D E ".split(" "));
    set1.add("M");
    System.out.println("B: " + set1.contains("B"));//ada H
    System.out.println("H: " + set1.contains("H"));//ada N
   
    Set<String> set2 = new HashSet<String>();
    Collections.addAll(set2, "E F G H".split(" "));

    //Apakah huruf2 di set2 ada di set 1 ?? -> true
    System.out.println("set2 in set1: " + set1.containsAll(set2));

    set1.remove("H");
    System.out.println("set1: " + set1);
    System.out.println("set2 in set1: " + set1.containsAll(set2));

    set1.removeAll(set2);
    System.out.println("set2 dihapus dari set1: " + set1);

    Collections.addAll(set1, "X Y Z".split(" "));
    System.out.println("‘X Y Z’ ditambahkan ke set1: " + set1);
  }
}


b.      List merupakan pengelompokan berdasarkan urutan seperti layaknya array, karena itu  ia memiliki posisi awal dan juga posisi akhir. Dengan list kita bisa menyimpan suatu objek pada awal atau akhir list, menyisipkan, mengakses serta menghapus isi list pada posisi index tertentu dimana semua proses ini selalu didasarkan pada urutannya. Selain itu isi list tidak harus unik. Beberapa Class java yang mengimplementasi kelas ini antara lain : Vector, Stack, LinkedList, dan ArrayList.



Contoh dalam Program :
Vector

import java.util.Scanner;
import java.util.Vector;

public class VektorJava{
    public static void main(String[] args) {
        String data = "";
        Vector<String> V = new Vector<String>();
        Scanner input = new Scanner(System.in);
        for(int i=0;i<=3;i++){
        System.out.print("Masukan Data "+i+": ");
        data = input.next();
        V.add(data);
        }

        System.out.println(V);

        String nama = (String) V.get(0);
        System.out.println(nama);

    }

}
 

Stack

import java.io.*;
import java.util.*;

public class StackImplement {
    Stack<Integer> stack = new Stack<Integer>();
    String str;
    int num, n;

    public static void main(String[] args) {
        StackImplement q = new StackImplement();
    }

    public StackImplement() {
        try {
            BufferedReader bf = new BufferedReader(
            new InputStreamReader(System.in));
            System.out.print("Banyak Data : ");
            str = bf.readLine();
            num = Integer.parseInt(str);
            for (int i = 1; i <= num; i++) {
                System.out.print("Masukan Elemen " + i + " : ");
                str = bf.readLine();
                n = Integer.parseInt(str);
                stack.push(n);
            }
        } catch (IOException e) {
        }


        System.out.println("Stack : ");
        while (!stack.empty()) {
            System.out.print(stack.pop() + "  ");
        }
        System.out.println();
    }
}



LinkedList

import java.util.LinkedList;

public class LinkListCollection {
    public static void main(String[] args) {
        LinkedList<String> A = new LinkedList<String>();
        String[] nama = {"David","Alfa","Benny"};

        //Tambah data data diambil dari array nama;
        for(int nList = 0;nList<nama.length;nList++){
            A.add(nama[nList]);
        }

        //Tampil Data
        System.out.println("Data Asli : ");
        for(int nList = 0;nList<nama.length;nList++){
            System.out.println("Indeks "+nList+": "+A.get(nList));
        }
       
        System.out.println("\nTambah data di Index ke-3 : ");
        A.add(3, "Danni");

        for(int nList = 0;nList<=nama.length;nList++){
            System.out.println("Indeks "+nList+": "+A.get(nList));
        }

        System.out.println("\nDelete data di Index ke-2 : ");
        A.remove(2);
        for(int nList = 0;nList<nama.length;nList++){
            System.out.println("Indeks "+nList+": "+A.get(nList));
        }

        System.out.println("\nTambah data di Awal list : ");
          A.addFirst("Marcelo");
          for(int nList = 0;nList<=nama.length;nList++){
            System.out.println("Indeks "+nList+": "+A.get(nList));
        }
         
        System.out.println("\nTambah data di Akhir list : ");
          A.addLast("Ferdi");
           for(int nList = 0;nList<=nama.length+1;nList++){
           System.out.println("Indeks "+nList+": "+A.get(nList));
        }

          System.out.println("\nTambah data di Akhir list : ");
          A.remove(4);
           for(int nList = 0;nList<=nama.length;nList++){
           System.out.println("Indeks "+nList+": "+A.get(nList));
    }

  }
 }






ArrayList

import java.util.ArrayList;
import java.util.Scanner;

public class ArrayListCollection {
    public static void main(String[] args) {
        String str = "";
        ArrayList<String> senerai = new ArrayList<String>();
        Scanner scan = new Scanner(System.in);
        while (true) {
            try {
                System.out.println("\n1. Tambah Data");
                System.out.println("2. Lihat Data");
                System.out.println("3. Delete Data");
                System.out.println("4. Exit");
                System.out.print("Masukan pilihan : ");
                int pilihan = scan.nextInt();

                switch (pilihan) {
                    case 1:
                        int jmlDt = 0;
                        System.out.print("Tambah data : ");
                        str = scan.next();
                        senerai.add(str);
                        jmlDt++;
                        break;
                    case 2:
                        System.out.println("\nIsi senerai sekarang : ");
                        System.out.println("Jumlah Element : " + senerai.size());
                        for (int i = 0; i < senerai.size(); i++) {
                            System.out.println("Index " + i + ". " + senerai.get(i));
                        }
                        System.out.println("");
                        break;
                    case 3:
                        int indeks;
                        try {
                            System.out.print("Masukan Index list yang akan di hapus: ");
                            indeks = scan.nextInt();
                            senerai.remove(indeks);
                            System.out.println(">remove data sukses<");
                        } catch (IndexOutOfBoundsException a) {
                            System.out.println("Indeks Array melebihi batas");
                        }
                        break;
                    case 4:
                        System.out.println("Terima kasih");
                        System.exit(0);

                    default:
                        System.out.println("Inputan Tidak tersedia \n");
                }


            } catch (Exception e) {
                System.err.println("Salah Input");
                System.exit(1);
            }
        }
    }
}

Implementasi dari ArrayList dan Vector ini mirip seperti array, dimana kita dapat menggakses anggotanya melalui indeksnya. Kelebihannya adalah ia dapat menyesuaikan ukurannya sesuai dengan kebutuhan. Perbedaan dari kedua kelas ini, vector secara internal telah mendukung sinkronisasi, sedangkan ArrayList secara internal tidak mendukung sinkronisasi.

c.       Queue merupakan model pengelompokan berdasarkan metode antrian suatu prioritas tertentu(contoh FIFO-First In First Out). Beberapa Class java yang mengimplementasi interface Queue ini antara lain PriorityQueue dan LinkedList.


import java.io.*;
import java.util.*;

public class QueueJava{
    String str;
    int num;
    public static void main(String[] args){
            QueueJava q = new QueueJava();
    }

    public QueueJava(){
        try{
             LinkedList<Integer> list = new LinkedList<Integer>();
             BufferedReader bf = new BufferedReader(
                     new InputStreamReader(System.in));
            
             System.out.print("Banyak Data : ");
             str = bf.readLine();
             if((num = Integer.parseInt(str)) == 0){
                System.out.println("Anda menekan angka nol.");
                System.exit(0);
            }
           
            else{
           
            for(int i = 0; i < num; i++){
                System.out.print("Masukan Elemen "+i+" : ");
                str = bf.readLine();
                int n = Integer.parseInt(str);
                list.add(n);
            }
            }
            System.out.println("\nElement Pertama   : "
                    + list.removeFirst());
            System.out.println("Element Terakhir  : "
                    + list.removeLast());
            System.out.println("Element Tengah    : ");
              while(!list.isEmpty()){
                 System.out.print(list.remove() + " ");
              }
              System.out.println("");
            }
            catch(Exception e){
             System.out.println(e.getMessage()
                     + " adalah String.");
             System.exit(0);
            }
        }
}

Referensi :
Deitel, Paul.2010.Java How to Program Eighth Edition.PEARSON. 
Eckel, Brucei .Thinking in Java.
Indrajani .2003.Pemrograman Berbasis Objek dengan Bahasa Java.Jakarta : PT Elex Media Komputindo
Khadir, Abdul.2003.Dasar Pemrograman Java.Yogyakarta : Andi Offset.

No comments :