Hello, World!

Hello, there!

This blog was originally made in purpose of fulfilling the Data Structure class' assignment. Despite the primary purpose, this blog is also meant to be a personal place for me to upload tasks or materials while tracking the improvement of my programming skills.

Once again, I welcome you to a bit inane but breathtaking world, My Personal World.

Java Array Assignment

Hello, there!

For today, i'm gonna tell you guys about how array works and its implementation in java. But for the sake of making it more understandable and easy to comprehend, i'm gonna write this article in bahasa. If u want to learn more about the dynamic system of array in english, you could easily access the source that I will attach below this article. Enjoy!


 1. Array Application


import java.util.Scanner;
/**
* Write a description of class Array here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class ArrayApp
{
public static void main (String[] args)
{
long arr[];
arr = new long[100];
long searchKey;
int j;
int nElems = 10;
arr[0] = 77; arr[1] = 99; arr[2] = 44; arr[3] = 55;
arr[4] = 22; arr[5] = 88; arr[6] = 11; arr[7] = 00;
arr[8] = 66; arr[9] = 33;
//print semua elemennya
System.out.println("Below here are the elements of the array\n");
for(j=0; j<nElems; j++)
{
System.out.println(arr[j] + " ");
System.out.println("\n");
}
//Nyari elemennya
Scanner scan = new Scanner(System.in);
System.out.println("Please input the element you're searching for");
searchKey = scan.nextLong();
for(j=0; j<nElems; j++)
{
if(arr[j] == searchKey)
{
break;
}
}
if(j == 10)
{System.out.println("Can't find" + searchKey);}
else
{System.out.println("Found" + searchKey);}
//Untuk menghapus
System.out.println("Please input the element you wish to delete");
long delKey = scan.nextLong(); //Scan dulu yang mau dihapus yang mana
for(j=0; j<nElems; j++) //Cari dulu elemen yang mau dihapus
{
if(arr[j] == delKey)
{break;}
}
/*
* Pindahkan array dengan indeks lebih tinggi
* dari elemen yang dicari, ke bawah
*/
for(int k=j; k<nElems; k++)
{
arr[k] = arr[k+1];
nElems--;
}
for(j=0; j<nElems; j++) //Print elemen sisanya
{
System.out.println(arr[j] + " ");
System.out.println("\n");
}
}
}
view raw ArrayApp.java hosted with ❤ by GitHub
2. Low Array Application

        Pada Low Array Application, program dibagi menjadi beberapa kelas. Program yang berisikan struktur penyimpanan menjadi satu kelas sedanngkan program yang menjalankan struktur penyimpanan data tersebut menjadi kelas lain. Tujuan dari pembagian kelas ini sendiri adalah untuk lebih memperjelas fungsi dari sebuah program, mempermudah pembuat program untuk merancang dan memahami kodenya. 

             Pada lowArray.java, kelas LowArray dilingkupi atau diselimuti dengan array Java pada umumnya. Array tersebut tersembunyi dari dunia luar; sifatnya privasi sehingga hanya kelas LowArray yang dapat mengaksesnya. Berbeda dengan kelas LowArray, LowArrayApp menciptakan objek dari kelas LowArray dan menggunakannya untuk menyimpan dan memanipulsi data. Untuk mempermudah pemahaman, kelas LowArray dapat dianalogikan sebagai alat sedangkan LowArrayApp sebagai pengguna alat tersebut. 

           Sebuah kelas yang digunakan untuk menyimpan objek data, seperti kelas LowArray dalam program ini, sering disebut sebagai Kelas Kontainer. Biasanya, kelas kontainer tidak hanya menyimpan data, melainkan menyediakan metode untuk mengakses data dan bahkan mengurutkan serta menjalankan perintah kompleks lainnya.

import java.util.Scanner;
class LowArray
{
private long[]a; //membuat sebuah array
public LowArray(int size)
{a = new long[size];} //insialisasi array
public void setElem(int index, long value) //masukkan value ke dalam array
{ a[index] = value;}
public long getElem (int index) //mendapatkan nilai dalam sebuah array
{return a[index];}
} //struktur LowArray sampai disini
class LowArrayApp
{
public static void main (String[] args)
{
LowArray arr;
arr = new LowArray(100); //membuat sebuah array dengan ukutan 100
int nElems = 0;
int j;
arr.setElem(0, 77); arr.setElem(1, 99); arr.setElem(2, 44); arr.setElem(3, 55);
arr.setElem(4, 22); arr.setElem(5, 88); arr.setElem(6, 11); arr.setElem(7, 00);
arr.setElem(8, 66); arr.setElem(9, 33);
nElems = 10;
for(j=0; j<nElems; j++) //digunakan untuk menampilkan isi pada array
System.out.println(arr.getElem(j) + " ");
System.out.println(" ");
//Untuk mencari apakah data tersebut ada atau tidak
Scanner scan = new Scanner(System.in);
long searchKey = scan.nextLong();//scan angka yang ingin dicari pada array
for(j=0; j<nElems; j++)
{
if(arr.getElem(j)==searchKey)
{/* apabila isi dari indeks ke-j sama dengan yang dicari, maka */
break;}
}
if (j == nElems) //kalau tidak ketemu
System.out.println ("Can't find" + searchKey);
else
System.out.println("Found" + searchKey);
//Untuk menghapus data tertentu
System.out.println("Please input the element you wish to delete");
long delKey = scan.nextLong(); //Scan dulu yang mau dihapus yang mana
for(j=0; j<nElems; j++) //Cari dulu elemen yang mau dihapus
{
if(arr.getElem(j) == delKey)
{break;}
}
/*
* Pindahkan array dengan indeks lebih tinggi
* dari elemen yang dicari, ke bawah
*/
for(int k=j; k<nElems; k++)
{
arr.setElem(k, arr.getElem(k+1));
nElems--;
}
for(j=0; j<nElems; j++) //Print elemen sisanya
{
System.out.println(arr.getElem(j) + " ");
System.out.println("\n");
}
}
}
view raw LowArray.java hosted with ❤ by GitHub
3. High Array Application

            Pada highArray.java, pengguna kelas HighArrayApp tidak lagi perlu memikirkan tentang nomor indeksnya. Metode ini tidak memerlukan nomor indeks sebagai argumen karena kelas lainnya sudah bertanggung jawab dalam mengurus atau mengontrol nomor indeksnya. Pengguna kelas HighArrayApp bebas untuk memfokuskan perhatiannya terhadap "apa" dibanding "bagaimana" ー apa yang akan dimasukkan, dihapus, diakses, dibanding memikirkan bagaimana program tersebut dijalankan.

            Pada lowArray.java, kode dalam main() untu mencari sebuah hal membutuhkan 8 baris sedangkan pada highArray.java, hanya membutuhkan satu baris. Pengguna kelas HighArrayApp tidak perlu memikirkan nomor indeksnya atau detail array lainnya. Lebih dari itu, pengguna kelas bahkan tidak perlu tahu jenis struktur data apa kelas HighArray tersebut. Strukturnya tersembunyi dibalik perukaan interface.                


class HighArray
{
private long[] a; //definisiin arraynya dulu
private int nElems; //jumlah elemen yang bakal diinput ke dalam array
public HighArray(int max)
{
a= new long[max]; //insialisasi array
nElems = 0;
}
public boolean find(long searchKey) //
{
int j;
for(j=0; j<nElems; j++)
{
if(a[j]== searchKey)
{break;}
}
if(j == nElems)
{return false;}
else
{return true;}
}
public void insert(long value) //masukin data ke dalam array
{
a[nElems] = value; //masukkan data nya ke array
nElems ++; //besarkan ukuran array
}
public boolean delete(long value) //mengjapus data dalam array indeks tertentu
{
int j;
for(j=0; j<nElems; j++)
{
if(value == a[j])
{break;}
}
if(j==nElems)
{return false;}
else
{
for(int k=j; k<nElems; k++)
{
a[k] = a[k+1];
nElems--;
}
return true;
}
}
public void display() //menampilkan data dalam array
{
for(int j=0; j<nElems; j++)
{
System.out.println(a[j] + " ");
}
System.out.println(" ");
}
}
class HighArrayApp
{
public static void main (String[] args)
{
int maxSize = 100; //ukuran dari array
HighArray arr;
arr = new HighArray(maxSize); //membuat sebuah array
arr.insert(77); arr.insert(99); arr.insert(44); arr.insert(55);
arr.insert(22); arr.insert(88); arr.insert(11); arr.insert(00);
arr.insert(66); arr.insert(33);
arr.display(); //menampilkan semua elemen array
//menghapus 3 elemen pada array
arr.delete(00);
arr.delete(55);
arr.delete(99);
arr.display();//tampilkan arraynya lagi
}
}
view raw HighArra.java hosted with ❤ by GitHub
4. Ordered Array Application

            Perbedaan orderedArray.java dengan ketiga sistem arraay lainnya adalah pencarian datanya menggunakan binary search. Keuntungan utama penggunaan program ini adalah waktu pencarian menjadi jauh lebih cepat dibanding array yang tidak tersusun. Kekurangannya adalah penambahan elemen pada array akan memakan waktu lebih banyak karena semua data dengan nilai yang lebih besar harus digeser satu per satu ke atas untuk membuat ruang lebih besar.

            Oleh karena itu, array yang tersusun akan bermanfaat pada situasi dimana sistem pencarian banyak digunakan, tetapi penambahan maupun pengurangan data jarang dilakukan. Array yang terstruktur akan cocok digunakan pada database karyawan perusahaan, namun kurang tepat jika digunakan pada penyimpanan sebuah toko retail.


class OrdArray
{
private long[] a; //buat sebuah array a
private int nElems; //jumlah elemen yang akan dimasukan ke dalam array
public OrdArray(int max)
{
a = new long[max]; // deklarasiin arraynya
nElems = 0;
}
public int size()
{return nElems;}
public int find(long searchKey)
{
int lowerBound = 0;
int upperBound = nElems-1;
int curln;
while(true)
{
curln = (lowerBound + upperBound)/2;
if(a[curln] == searchKey)
{return curln;} //ketemu
else if(lowerBound>upperBound)
{return nElems;} //tidak ketemu
else
{
if(a[curln] < searchKey)
{lowerBound = curln+1;} //ada di bagian atas
else
{upperBound = curln-1;} //ada di bagian bawah
}
}
}
public void insert(long value) //memasukan elemen ke dalam array secara berurutan
{
int j;
for(j=0; j<nElems; j++) //cari lokasi indeks yang tepat
{
if(a[j]>value)
{break;}
}
for(int k=nElems; k>j; k--) //yang lebih besar dipindahkan satu ke kiri
{
a[k] = a[k-1];
}
a[j] = value; //masukan data elemennya
nElems++; //perbesar ukuran arraynya
}
public boolean delete(long value)
{
int j = find(value);
if(j==nElems) //tidak dapat menemukannya
{return false;}
else
{
for(int k=j; k<nElems; k++) //yang lebih besar digeser ke kanan
{a[k] = a[k+1];}
nElems--; //mengurangi ukuran arraynya
return true;
}
}
public void display()
{
for(int j=0; j<nElems; j++) //untuk semua elemen
{System.out.println(a[j] + " ");} //tampilkan
System.out.println("");
}
}
class OrderedArrayApp
{
public static void main (String[] args)
{
int maxSize = 100; //ukuran dari sebuah array
OrdArray arr; //referensi ke array
arr = new OrdArray(maxSize); //membuat array
arr.insert(77); arr.insert(99); arr.insert(44); arr.insert(55);
arr.insert(22); arr.insert(88); arr.insert(11); arr.insert(00);
arr.insert(66); arr.insert(33);
int searchKey = 55; //mencari item dengan value 55
if(arr.find(searchKey) != arr.size())
{System.out.println("Found" + searchKey);}
else
{System.out.println("Can't find" + searchKey);}
arr.display(); //tampilkan elemen-elemen array
//hapus 3 item dalam array
arr.delete(00);
arr.delete(55);
arr.delete(99);
arr.display(); //tampilkan setelah dihapus
}
}
5. Person Array Application

            Beberapa contoh Java yang sudah ditampilkan sebelumnya, tipe data yang disimpan ke dalam struktur data hanya berupa variabel primitif, seperti long, int, dll. Tipe data tersebut memang lebih mudah dan lebih sederhana sebagai contoh, namun struktur data pada aslinya bukan seperti itu. Biasanya, data yang disimpan merupakan data yang mengandung banyak jenis. Seperti halnya penyimpanan pribadi, seseorang akan memasukan nama akhir, nama awal, umur, dan lain-lain.


class Person
{
private String lastName;
private String firstName;
private int age;
public Person(String last, String first, int a)
{
lastName = last;
firstName = first;
age = a;
}
public void displayPerson()
{
System.out.println(" Last name:" + lastName);
System.out.println(", First name:" + firstName);
System.out.println(", Age:" + age);
}
public String getLast() //masukan nama akhir
{return lastName;}
}
class ClassDataArray
{
private Person[] a; //referensi ke array
private int nElems; //jumlah elemen dalam array
public ClassDataArray(int max)
{
a = new Person[max]; //membuat sebuah array
nElems = 0; //inisialiasi
}
public Person find(String searchName)
{
int j;
for(j=0; j<nElems; j++)
{
if(a[j].getLast().equals(searchName)) //apakah ketemu?
{break;}
}
if(j==nElems) //tidak ketemu
{return null;}
else //ketemu
{return a[j];}
}
public void insert(String last, String first, int age)
{
a[nElems] = new Person(last, first, age);
nElems++; //tambahkan ukuran arraynya
}
public boolean delete(String searchName)
{
int j;
for(j=0; j<nElems; j++)
{
if(a[j].getLast().equals(searchName))
{break;}
}
if(j==nElems) //tidak ketemu
{return false;}
else //ketemu
{
for(int k=j; k<nElems; k++)
{a[k] = a[k+1];}
nElems--;
return true;
}
}
public void displayA()
{
for(int j=0; j<nElems; j++)
{a[j].displayPerson();}
}
}
class ClassDataApp
{
public static void main (String[] args)
{
int maxSize = 100;
ClassDataArray arr;
arr = new ClassDataArray(maxSize); //buat arraynya
//masukan 10 item
arr.insert("Evans", "Patty", 24);
arr.insert("Smith", "Lorraine", 37);
arr.insert("Yee", "Tom", 43);
arr.insert("Adams", "Henry", 63);
arr.insert("Hashimoto", "Sato", 21);
arr.insert("Stimson", "Henry", 29);
arr.insert("Velasquez", "Jose", 72);
arr.insert("Lamarque", "Henry", 54);
arr.insert("Vang", "Minh", 22);
arr.insert("Creswell", "Lucinda", 18);
arr.displayA();
String searchKey = "Stimson"; //cari sebuah item
Person found;
found=arr.find(searchKey);
if(found!=null)
{
System.out.println("Found");
found.displayPerson();
}
else
{System.out.println("Can't find" + searchKey);}
System.out.println("Deleting Smith, Yee, and Creswell");
arr.delete("Smith");
arr.delete("Yee");
arr.delete("Creswell");
arr.displayA();
}
}
For the full source code, please kindly click here

Comments

Popular Posts