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"); | |
} | |
} | |
} |
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"); | |
} | |
} | |
} |
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 | |
} | |
} |
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 | |
} | |
} |
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(); | |
} | |
} | |
Comments
Post a Comment