Array adalah sebuah struktur dari sebuah data yang menyimpan value dari data yang memiliki
tipe data yang sama. Setiap value bisa kita akses melalui angka-angka index. index suatu array
dimulai dari indeks 0 bukan 1Sebagai contoh jika A merupakan sebuah array dengan tipe integer,
maka notasi dari array A adalah: A[n], dengan n merupakan angka index dari array tersebut
misal:
A[0]=100
A[1]=200
A[2]=300
A[3]=400
Dari array di atas bisa kita simpulkan: array A di atas memiliki tipe data integer(bisa dilihat dari
value yang ada), memiliki panjang array 4, array dengan indeks ke-0 memiliki value 100, indeks
ke-1 bervalue:200, indeks ke-2 bervalue:30 Dan seterusnya
Dalam pemograman java, pendeklarasian suatu array bisa ditulis dalam bentuk:
int [ ] b;
Statemen diatas hanya mendeklarasikan variabel b sebagai variabel bertipe array integer,
untuk membuat(construct) array kita tulis dengan menggunakan operator ‘new’ seperti contoh
berikut:
Statement diatas berarti telah dibuat array dengan nama a bertipe integer dan memiliki
kapasitas 100 value, ingat indeks mulai dari 0 – 99, tidak ada indeks ke-100 (a [100]).
Dalam pengisian value sebuah array kita bisa lakukan dengan melakukan metode looping seperti:
Untuk mengetahui ukuran / panjang dari suatu array, kita gunakan syntaks: namaaray.length
contoh : System.out.println(a.length); akan mencetak ukuran dari array a, yaitu sebanyak 100.
package package01;
System.out.println(“Kota ke ” + k + ” : “+arrKota[k]);
}
2. ARRAY LIST :
ArrayList adalah sebuah kelas yang dapat penyimpanan data berupa list objek berbentuk array
yang ukurannya dapat berubah secara dinamis sesuai dengan jumlah data yang dimasukkan.
ArrayList dapat menampung sejumlah data secara dinamis, sehingga seberapapun jumlahnya
akan ditampung oleh ArrayList tanpa memperhatikan berapa jumlah maksimal elemen yang
dapat ditampung.
ArrayList digunakan dalam menyimpan data dalam bentuk objek, sehingga untuk menyimpan
data didalam ArrayList maka, buatlah sebuah kelas yang kemudian dijadikan objek yang dapat
menyimpan data. ArrayList terdapat pada kelas java.util, sehingga untuk menggunakan
ArrayList, maka harus melakukan import java.util. ArrayList dapat menyimpan sekumpulan data
yang disimpan dalam satu-kesatuan. Misalkan: menyimpan data mahasiswa berupa NIM, Nama,
dan Alamat, maka data tersebut akan disimpan dalam satu-kesatuan array biarpun data tersebut
memiliki tipe data berbeda. Berarti ArrayList tersebut menyimpan 3 data variabel yang berbeda
dalam satu elemen array.
package package02;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
aList.add(“Palembang”);
aList.add(“Jakarta”);
aList.add(“Samarinda”);
aList.add(“Makassar”);
aList.add(“Jayapura”);
aList.remove(3);
aList.add(“Balikpapan”);
Collections.sort(aList);
Collections.sort(aList, Collections.reverseOrder());
while(iterator.hasNext()){
System.out.println(element);
3. LINKED LIST :
Sekumpulan elemen bertipe sama, yang mempunyai keterurutan tertentu, yang setiap elemennya
terdiri dari dua bagian Struktur berupa rangkaian elemen saling berkait dimana setiap elemen
dihubungkan elemen lain melalui pointer. Pointer adalah alamat elemen. Penggunaan pointer
untuk mengacu elemen berakibat elemen-elemen bersebelahan secara logik walau tidak
bersebelahan secara fisik di memori. Link list adalah desain tempat penyimpanan data yang
terdiri dari node-node (simpul-simpul) yang saling terhubung. Link list dapat diilustrasikan
seperti kereta api, dimana kereta api terdiri dari gerbong-gerbong yang saling terhubung yang
dapat mengangkut penumpang. Gerbong disini setara dengan node dalam link list yang berfungsi
untuk menyimpan Link list tidak mempunyai indeks seperti array. Kita hanya bisa memberi
nama node. Akan tetapi, tidak semua node dalam link list mempunyai nama. Sebaiknya kita
memberi nama untuk node yang pertama (misal namanya head), dan node yang terakhir (misal
namanya tail). Tujuannya untuk memudahkan operasi link list dari depan atau belakang, misal
Menambah data atau menghapus data.
package Package03;
import java.util.LinkedList;
lList.add(“Yogyakarta”);
lList.add(“Semarang”);
lList.add(“Kediri”);
lList.add(“Magelang”);
lList.add(“Jepara”);
if(lList.size()==0){
else{
lList.remove(1);
Stack adalah salah satu struktur data yang memiliki sistem kerja Last In First Out (LIFO), artinya
yang terakhir masuk pertama keluar. Dapat di ilustrasikan seperti sebuah tumpukan kotak, ketika
mengambil sebuah kotak di dalam tumpukan itu maka harus diambil satu persatu dari kotak yang
paling atas dari tumpukan kotak tersebut. Atau Dosen saya mengilustrasikan sebagai tumpukan
piring, tapi intinya sama saja kan? Sebuah stack hanya dapat ditambahkan dan dikurangi
elemennya hanya dari satu sisi yakni elemen atasnya atau biasa disebut Top Of Stack.
Istilah yang digunakan antara lain :
Fungsi init : fungsi yang digunakan untuk inisialisasi atau membuat stack baru yang
masih kosong.
Fungsi clear : digunakan untuk mengosongkan stack. Stack dianggap kosong apabila
puncak stack berada pada
posisi -1.
Fungsi push : digunakan untuk menambahkan data ke dalam stack. Penambahan data tidak
bisa dilakukan apabila
stack sudah penuh. Urutan perintahnya adalah: menambahkan nilai top dan menambahkan
data
pada posisi nilai top. Jika dalam Linked List menggunakan method addLast.
Fungsi pop : digunakan untuk mengeluarkan data teratas stack dengan syarat bahwa stack
tidak kosong.
Urutan perintahnya adalah menghapus data pada posisi nilai top dan menurunkan nilai top. Jika
dalam Linked List menggunakan method removeLast.
package package04;
import java.util.EmptyStackException;
import java.util.Stack;
stack.add(“Bali”);
stack.add(“Lombok”);
stack.add(“Bandung”);
stack.add(“Medan”);
stack.clear();
System.out.println(“Hapus Semua Kota, Daftar Kota Sekarang: “+stack);
5. QUEUE (ANTRIAN) :
Queue (antrian) adalah struktur data dimana data yang pertama kali dimasukkan adalah data
yang pertamak kali bisa dihapus. Atau bisa juga disebut dengan struktur data yang menggunakan
mekanisme FIFO (First In First Out). Queue dalam kehidupan sehari-hari seperti antrian pada
penjualan tiket kereta api, dimana orang yang pertama datang adalah orang yang pertama kali
dilayani untuk membeli tiket. Jika ada orang baru yang datang akan membali tiket, maka
posisinya berada pada urutan paling belakang dalam antrian tersebut.Orang yang berada pada
posisi terakhir dalam antrian adalah yang terakhir kali dapat dilayani dan memperoleh tiket
kereta api (kalau kurang beruntung, maka akan kehabisan tiket). Contoh lain adalah nasabah
yang antri di teller bank, paket data yang menunggu untuk ditransmisikan lewat internet, antrian
printer dimana terdapat antrian print job yang menunggu giliran untuk menggunakan printer, dsb.
Fungsi init : digunakan untuk membuat queue baru atau kosong, yaitu dengan memberi
nilai awal (head) dan
nilai akhir (tail) dengan -1.
Fungsi full : digunakan untuk mengetahui apakah queue sudah penuh atau belum.
Dilakukan dengan
memeriksa nilai akhir (tail) apakah sudah sama dengan maksimal queue.
Fungsi empty : digunakan untuk mengetahui apakah queue masih kosong atau tidak.
Dilakukan dengan memeriksa
nilai akhir (tail) bernilai -1 atau tidak.
Fungsi dequeue : digunakan untuk mengambil elemen dari queue, dengan cara memindahkan
semua elemen satu
langkah ke posisi depannya sehingga elemen yang paling depan tertimpa.
Fungsi clear : digunakan untuk menghapus semua elemen dalam queue. Ada dua cara
yang bisa digunakan, yaitu
menuliskan fungsi seperti inisialisasi atau memanggil fungsi remove sampai queue kosong.
package Package05;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Queue;
Queuequeue=new LinkedList();
queue.add(“Bangka Belitung”);
queue.add(“Wamena”);
queue.add(“Madura”);
queue.add(“Tanggerang”);
Iteratori=queue.iterator();
while (i.hasNext()){
String s= i.next();
System.out.println(s);
6. DEQUEUE :
DEQUE adalah antrian dimana elemennya bisa masuk dan keluar lewat kedua ujungnya (berbeda
dengan queue yang hany bisa masuk lewat ujung belakang dan keluar lewat ujung depan).
Biasanya DEQUE disajikan dengan menggunakan Double link list yang memiliki dua buah
pointer yang menunjuk ke posisi sebelumnya dan sesudahnya. Gambar 5.1 menunjukkan struktur
umum dari sebuah DEQUE.
1. Deque input terbatas : suatu deque yang membatasi pemasukkan elemen hanya pada satu
ujung dari list, sementara penghapusan elemen boleh dilakukan pada kedua ujung list.
2. Deque output terbatas : merupakan kebalikan dari deque input terbatas yaitu suatu deque
yang membatasi penghapusan elemen hanya pada satu ujung dari list, sementara
pemasukkan elemen boleh dilakukan pada kedua ujung list
package package06;
import java.util.Deque;
import java.util.Iterator;
import java.util.LinkedList;
deque.add(“Makassar”);
deque.add(“Samarinda”);
deque.add(“Riau”);
Iterator y=deque.iterator();
while (y.hasNext()){
String e = y.next();
System.out.println(e);
deque.addFirst(“Palembang”);
deque.addFirst(“Jakarta”);
deque.addLast(“Semarang”);
deque.addLast(“Yogyakarta”);
– Choice -execute hanya satu beberapa pernyataan tergantung pada kondisi ( jika dan beralih
pernyataan ) .
Pernyataan IF-THEN Adalah yang paling dasar dari semua laporan aliran kontrol . Ini
memberitahu program untuk mengeksekusi bagian tertentu dari kode hanya jika tes tertentu
bernilai benar . If-Then Dan If-Then-Else,pernyataan bersyarat biarkan program Java membuat
keputusan sederhana tentang apa yang harus dilakukan selanjutnya . Mereka bekerja dengan cara
yang logis yang sama seperti yang kita lakukan ketika membuat keputusan dalam kehidupan
nyata
package package06;
import java.util.Scanner;
ket = “Lulus”;
8. RECURSION :
Recursion adalah proses pemanggilan dirinya sendiri (fungsi atau prosedur). Fungsi maupun
prosedur yang memanggil dirinya disebut fungsi atau prosedur rekursif. Fungsi untuk suatu
bagian program yang mengembalikan (menghasilkan) hanya satu nilai. Sebuah function call
adalah suatu ekspresi jadi ia memberikan satu nilai.Procedure adalah suatu bagian program yang
melakukan aksi/fungsi khusus, biasanya berdasarkan sekumpulan parameter. Sebuah procedure
call adalah suatu statemen, jadi ia melakukan aksi. Banyak obyek dalam matematika
didefinisikan dengan menampilkan suatu proses untuk menghasilkan obyek-obyek tersebut.
Misalnya : n faktorial (n!) didefinisikan sebagai produk dari semua integer diantara n dan 1.
Contoh lain adalah bilangan asli. 1 adalah bilangan asli.Successor dari 1 adalah bilangan asli.
Perbedaan rekursi dengan prosedur/fungsi adalah rekursi bisa memanggil kedirinya sendiri tetapi
prosedur atau fungsi harus dipanggil lewat pemanggil prosedur/fungsi. Ciri masalah yang dapat
diselesaikan secara rekursif adalah masalah tersebut dapat direduksi menjadi satu atau lebih
masalah-masalah serupa yang lebih kecil. Secara umum suatu algoritma rekursif selalu
mengandung 2 macam kasus :
1. satu atau lebih kasus yang pemecahan masalahnya dilakukan dengan menyelesaikan masalah
serupa yg lebih
sederhana (menggunakan recursive call).
2. satu atau lebih kasus pemecahan masalahnya dilakukan tanpa recursive call. Kasus ini disebut
kasus dasar atau
penyetop. Supaya tidak terjadi rekursif tak hingga, maka setiap langkah rekursif haruslah
mengarah ke kasus penyetop.
FIBONACCI_RECURSION :
Barisan angka khusus yang dibuat oleh fibonacci dengan menulis dua angka awal yang
dijumlahkan. Kemudian angka kedua dijumlahkan dengan hasil penjumlahan sebelumnya hingga
membentuk barisan angka.
Deret fibonacci bisa dipakai sebagai trik sulap,dengan cara yang sama yaitu membuat barisan
hingga diperoleh 10 angka.Jika semua angka itu dijumlahkan hasilnya sama dengan angka
ketujuh barisan itu yang dikalikan sebelas.
Contoh:
pilih dua buah angka(misal 6 n 3)
dijumlahkan menjadi 9
jumlahkan angka kedua(3) dgn angka sebelumnya(9)=12
jumlahkan lagi dua angka paling akhir(9+12=21)
teruskan hal yang sama(12+21=33)
lalu 21+33=54
lalu 33+54=87
lalu 54+87=141
lalu 87+141=228
terakhit suruh teman anda menjumlahkan semua angka tersebut dengan cepat
(6+3+9+12+21+33+54+87+141+228+369+597)
anda bisa menghitungnya dengan cepat dengan mengalikan angka ke7(54) dengan sebelas
(54×11=594)
package package09;
import java.util.Scanner;
System.out.print(fibonacciRecusion(i) + ” “);
return 1;
return 1;
fibo1 = fibo2;
fibo2 = fibonacci;
return fibonacci;
return fibonacci;
}
FACTORIAL_RECURSION :
Faktorial bilangan asli n adalah perkalian semua bilangan asli yang kurang atau sama dengan n.
Faktorial dilambangkan dengan tanda !. Jadi jika n!, maka dibaca “n faktorial“.
0! = 1
0! = 1
1! = 1
2! = 1 × 2 = 2
3! = 1 × 2 × 3 = 6
4! = 1 × 2 × 3 × 4 = 24
5! = 1 × 2 × 3 × 4 × 5 = 120
6! = 1 × 2 × 3 × 4 × 5 × 6 = 720
7! = 1 × 2 × 3 × 4 × 5 × 6 × 7 = 5040
8! = 1 × 2 × 3 × 4 × 5 × 6 × 7 × 8 = 40320
9! = 1 × 2 × 3 × 4 × 5 × 6 × 7 × 8 × 9 = 362880
10! = 1 × 2 × 3 × 4 × 5 × 6 × 7 × 8 × 9 × 10 = 3628800
Faktorial biasa digunakan untuk menghitung banyaknya susunan yang dapat dibentuk dari
sekumpulan
package packagesi2j;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
NumberFormatException, IOException{
(new InputStreamReader(System.in));
int a = Integer.parseInt(br.readLine());
if (b <= 1)
return 1;
else
return b*fact(b-1);
Matrik atau array dua dimensi adalah struktur data yang mengacu pada sebuah/sekumpulan
elemen yang diakses melalui indeks. Berbeda dengan larik, maka pada matriks indeks terdiri dari
dua bagian yaitu indeks baris dan indeks kolom. Setiap elemen matriks dapat diakses melalui
indeksnya, misalnya mengisi elemen matriks yang bariske-2 dan kolom ke-1 dengan nilai 100,
maka cara mengisinya adalah A[2,1] 100.
Vektor merupakan ADT (abstrak data type), dimana struktur data Vektor sesungguhnya cukup
serupa dengan lank I dimensi. keduanya baik lank maupun vektor dapat menyimpan beberapa
nilai yang bertipe data yang sama serta dapat diakses secara acak, banyak kemudahan pada ADT
Vektor java, method method yang diperlukan untuk melakukan manipulasi data vektro sudah
tersedia di java Interface Vektor, sebelum dapat digunakan class program java hams memanggil
java.util.Vector;,sehingga semua interface vektor (method) akan dapat dikenali Konstruktor new
Vector() membuat vektor tanpa elemen.
package matrix;
import java.util.Scanner;
matrixA[i][j]=input();
System.out.print(matrixA[i][j]+” “);
System.out.println();
Scanner a=new
Scanner(System.in);
int b=a.nextInt();
return b;
Method set() biasanya digunakan untuk menge-set atau memberikan atau mengganti nilai
property (variabel) milik sebuah objek
1.HashSet
2.TreeSet
3.LinkedHashSet
HashSet :
HashSet mengimplementasikan tabel hash yang akan kita bahas di bagian berikutnya. Operasi
penambahan, pencarian, dan penghapusan dilakukan dengan sangat efisien pada tabel hash,
bahkan lebih cepat lagi dari TreeSet. Elemen pada HashSet tidak disimpan dalam urutan tertentu.
Iterator dari HashSet akan mengunjungi elemen-elemen pada HashSet dalam urutan yang
sepertinya acak dan mungkin berubah jika elemen baru ditambahkan. Karena elemen pada
HashSet tidak diurutkan, maka semua objek (termasuk yang tidak mengimplementasikan
interface Comparable) bisa dimasukkan dalam HashSet. Kita bisa menggunakan HashSet jika
elemen yang kita akan masukkan tidak bisa dibandingkan, atau urutannya tidak penting, atau jika
kecepatan lebih dipentingkan.
Package packagesi2j ;
import java.util.HashSet;
HS.add(“Surabaya”);
HS.add(“Semarang”);
HS.add(“Surakarta”);
HS.add(“Solo”);
HS.add(“Sidoarjo”);
HS.remove(“Surakarta”);
HS.removeAll(HS);
package package15si2j;
import java.util.LinkedHashSet;
linkedset.add(“Jayapura”);
linkedset.add(“Jakarta”);
linkedset.add(“Bali”);
linkedset.add(“Aceh”);
linkedset.add(“Manado”);
System.out.println(“Jumlah Kota= ” + linkedset.size());
TreeSet :
objek bertipe TreeSet memiliki sifat di mana elemen-elemennya terurut dalam urutan menaik.
Iterator dari suatu TreeSet akan mengunjungi elemen dalam set tersebut dalam urutan menaik.
TreeSet tidak bisa menyimpan semua objek, karena objek yang disimpan harus bisa diurutkan.
package package14si2j;
import java.util.TreeSet;
tSet.add(“Palembang”);
tSet.add(“Prabumulih”);
tSet.add(“Pagaralam”);
tSet.add(“Lahat”);
tSet.add(“Muara Enim”);
tSet.remove(“Lahat”);
tSet.clear();
—11. MAPS :
Map juga dapat menampung beragam tipe data. Berbeda dengan List dan Set, Map hanya bisa
menyimpan data secara berpasangan yang terdiri atas ‘key’ dan ‘value’. Dalam Map, nilai key
tidak boleh ada yang sama. Apabila kita memasukkan value dengan key yang sama, maka hanya
value terakhirlah yag disimpan dalam Map.
package package20si2j;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
System.out.println(“========================================”);
for (Iterator<String> iterator = mapString_String.values().iterator(); iterator.hasNext();) {
String string = (String) iterator.next();
System.out.println(string);
}
System.out.println(“========================================”);
}
}
Tree dalam pemrograman merupakan struktur data yang tidak linear / non linear yang digunakan
terutama untuk merepresentasikan hubungan data yang bersifat hierarkis antara elemen-
elemennya. Kumpulan elemen yang salah satu elemennya disebut dengan root (akar) dan sisa
elemen yang lain disebut sebagai simpul (node/vertex) yang terpecah menjadi sejumlah
himpunan yang tidak saling berhubungan satu sama lain, yang disebut subtree / cabang.
package SI2JFinal;
import javax.swing.*;
import java.awt.BorderLayout;
import java.util.*;
* @param args
*/
String[][] Data = {
};
public Tree(){
super(“Indonesia”);
setSize(250, 450);
setDefaultCloseOperation(JFrame.
EXIT_ON_CLOSE);
getContentPane().add(tree, BorderLayout.
CENTER);
}
public static void main(String[] args) {
object.init();
object.setVisible(true);
}// main
}// class
13. GRAPH :
Graph adalah kumpulan noktah (simpul) di dalam bidang dua dimensi yang dihubungkan dengan
sekumpulan garis (sisi). Graph dapat digunakan untuk merepresentasikan objek-objek diskrit dan
hubungan antara objek-objek tersebut. Representasi visual darigraph adalah dengan menyatakan
objek sebagai noktah, bulatan atau titik (Vertex), sedangkan hubungan antara objek dinyatakan
dengan garis (Edge).
G = (V, E)
Dimana
G = Graph
V = Simpul atau Vertex, atau Node, atau Titik
Graph merupakan suatu cabang ilmu yang memiliki banyak terapan. Banyak sekali struktur yang
bisa direpresentasikan dengan graf, dan banyak masalah yang bisa diselesaikan dengan bantuan
graf. Seringkali graf digunakan untuk merepresentasikan suaru jaringan. Misalkan jaringan jalan
raya dimodelkan graf dengan kota sebagai simpul (vertex/node) dan jalan yang menghubungkan
setiap kotanya sebagai sisi (edge) yang bobotnya (weight) adalah panjang dari jalan tersebut.
Ada beberapa cara untuk menyimpan graph di dalam sitem komputer. Struktur data bergantung
pada struktur graph dan algoritma yang digunakan untuk memmanipulasi graph. Secara teori
salah satu dari keduanya dapat dibedakan antara struktur list dan matriks, tetapi dalam
penggunaannya struktur terbaik yang sering digunakan adalah kombinasi keduanya.