You are on page 1of 24

Array

TI-FST-Universitas Sanata Dharma


Kasus
 Dari kasus pada pertemuan 1 :
 Tentukan kelas yang ada.
 Buat 3 contoh obyek dari kelas yang sudah dibuat.
 Apakah obyek-obyek tersebut perlu disimpan ?
 Menurut anda, bagaimana cara menyimpan
koleksi obyek tersebut ? Apakah kita memerlukan
kelas baru ? Jika ya, tentukan atribut dan method
tersebut.
Array
 Array adalah cara mengoleksi beberapa item dengan memakai
satu variable
 Contoh 100 data pelanggan disimpan dalam array:
String[] namaPelanggan = new String[100];
 Satu variable array namaPelanggan untuk menyimpan sederetan
data string.
 Variable array namaPelanggan mampu menyimpan 100 buah string.
 Data dalam array namaPelanggan mempunyai nomor index dari 0
sampai 99.
 Untuk mengakses data ke-55 dilakukan:
namaPelanggan[55] = "Gede Prama";
String buf = namaPelanggan[55];
 Di Java, array adalah object (berbeda dengan bahasa lain
termasuk C/C++).
 Dengan demikian array dapat diperlakukan seperti class-object
lainnya.
 Object array, dapat mengakses semua member dari class
Object.
 Selain member dari class Object, array juga mempunyai field
Deklarasi array
 Array dideklarasikan memakai operator berupa
sepasang tanda kurung kotak (bracket) [ ].
 Tanda [ ] ini dapat diletakkan setelah nama variable atau
setelah nama tipe.
 Karena array adalah object, maka deklarasi sebuah array
belum membuat object dari array.
 Contoh:
int[ ] numHorses;
int numLambs[ ];
float price[ ];
double distanceStars[ ];
char[ ] code;

 Ketika dideklarasikan (di atas), array mempunyai panjang


nol atau disebut array kosong (empty).
 Program tidak akan membuat object ataupun
mengalokasikan memori untuk deklarasi array tersebut,
dengan demikian variable array belum dapat dipakai atau
diakses.
Deklarasi array
 Untuk membuat object dari array dan mengalokasikan memori
untuk variable array, dipakai operator new.
 Contoh:
int[ ] numHorses; atau: int[ ] numHorses = new int[100];
numHorses = new int[100];

 Dibuat array integer dengan nama variable numHorses dan mempunyai


panjang 100.
 Dapat juga membuat object array dengan mendeklarasikan item-
item yang menjadi isi dari variable array secara langsung.
 Contoh:
int[ ] factorial = { 1, 1, 2, 6, 24, 120, 720, 5040 };
char code[ ] = { 'n', 'o', '&', ' ', 'a', ' ', '#', '=', '4', 'b' };

 Panjang array otomatis sesuai dengan jumlah deklarasi item (factorial =


8 dan code = 11).
 Sekali array dideklarasikan dan object array dibuat, maka panjangnya
akan tetap dan tidak dapat diubah (ditambah atau dikurangi).
 Tipe variable array dapat berupa tipe primitif (seperti integer, float
atau boolean) atau dapat juga berupa object.
Mengakses array
 Cara mengakses variable array sama seperti variable lain. Perbedaan
hanya pada tambahan operator [ ].
 Variable sebagai komponen dari array memiliki index., misalnya,
 Array integer dengan panjang 10, mempunyai 10 buah variable.
 Masing-masing memiliki index 0, index 1 …, index 9.
 Contoh:
Output Program:
class CobaArray {
public static void main(String args[ ]) { Panjang array = 5
String namaCustomer[ ] = new String[5];
namaCustomer[0] = "Ayu"; 0. Ayu : 20
namaCustomer[1] = "Baby"; 1. Baby : 13
namaCustomer[2] = "Cindy"; 2. Cindy : 27
namaCustomer[3] = "Dee"; 3. Dee : 4
namaCustomer[4] = "Eni"; 4. Eni : 31
int jumlahBeli[ ] = { 20, 13, 27, 4, 31 };
System.out.println("Panjang array = " + namaCustomer.length);
for (int i = 0; i < 5; i++) {
System.out.println(i + ". " + namaCustomer[i] +
"\t: " + jumlahBeli[i]);
}
}
}
Penjelasan Program
 Program di atas membuat object array namaCustomer
dan array jumlahBeli.
 Masing-masing mempunyai panjang = 5.
 Array namaCustomer dengan tipe String dibuat
dengan memakai operator new.
 Variable-nya diisi dengan memakai nomor index:
namaCustomer[0] = "Ayu"; dan seterusnya.
 Array jumlahBeli dibuat dengan memakai inisialisasi
langsung.
 Isi dari kedua array diakses dan ditampilkan ke layar.
 Dengan memakai loop for.
 Ada 5 anggota array, maka loop for memakai counter dari
index 0 sampai index 4 sesuai dengan index array.
 Statement namaCustomer[i] akan mengakses
komponen array ke-i.
 Jika nilai i = 3, maka statement tersebut akan mengakses
komponen array ke-4 (index = 3).
 Panjang dari array dapat diketahui dengan memakai
instance-variable length yang ada di dalam semua
Array multi-dimensi
 Deklarasi:
double distance[];

merupakan array satu dimensi.

 Dapat dibuat array yang berisikan array lainnya.


 Array yang berisikan array lainnya akan dianggap sebagai array
yang mempunyai komponen berupa object array.
 Contoh:
int cartesian[][] = new int[12][12]; // array 2 dimensi
char code[][][] = new char[4][8][2]; // array 3 dimensi
// array 2 dimensi
String nama[][] = { {"Agus", "Edi", "Tino", "Mali"},
{"Eni", "Cindy", "Dee", "Ayu"},
{"Feri", "Cat", "Lee", "Jelo"} };

 Array nama adalah array String 2 dimensi dengan panjang [3][4].


 Artinya: array dengan panjang 3, masing-masing terdiri dari array
dengan panjang 4.
Array multi-dimensi
 Untuk mengakses Array multi-dimensi, sama dengan array 1
dimensi.
 Contoh:
for (i = 0; i < 12; i++) {
for (j = 0; j < 12; j++) {
cartesian[i, j] = 40;
}
}
String buf;
buf = nama[0][1]; // buf = "Agus"
buf = nama[1][2]; // buf = "Dee"
buf = nama[2][3]; // buf = "Jelo“

 Perhatikan deklarasi array berikut:


short[ ] rowCoord, colCoord, matrix[ ];

 Sama artinya dengan deklarasi berikut:


byte rowCoord[ ], colCoord[ ], matrix[ ][ ];
Arrays of Objects
 In Java, in addition to arrays of primitive data
types, we can declare arrays of objects
 An array of primitive data is a powerful tool,
but an array of objects is even more powerful.
 The use of an array of objects allows us to
model the application more cleanly and
logically.
The Person Class
 We will use Person objects to illustrate the use of an
array of objects.

Person latte;
The Person class
supports the set methods
latte = new Person( ); and get methods.
latte.setName("Ms. Latte");
latte.setAge(20);
latte.setGender('F');

System.out.println( "Name: " + latte.getName() );


System.out.println( "Age : " + latte.getAge() );
System.out.println( "Sex : " + latte.getGender() );
Creating an Object Array - 1

Code A Person[ ] person;


Only the name person
person = new Person[20];
is declared, no array is
person[0] = new Person( ); allocated yet.

person

State
of
Memor
y After A is executed
Creating an Object Array - 2

Code Person[ ] person; Now the array for storing


20 Person objects is
B person = new Person[20]; created, but the Person
objects themselves are
person[0] = new Person( );
not yet created.

person

0 1 2 3 4 16 17 18 19

State
of
Memor
y After B is executed
Creating an Object Array - 3

Code Person[ ] person; One Person object is


person = new Person[20]; created and the reference
to this object is placed in
C person[0] = new Person( ); position 0.

person

0 1 2 3 4 16 17 18 19

State
of Person

Memor
y After C is executed
Person Array Processing – Sample 1
 Create Person objects and set up the person array.
String name, inpStr;
int age;
char gender;

for (int i = 0; i < person.length; i++) {


name = inputBox.getString("Enter name:"); //read in data values
age = inputBox.getInteger("Enter age:");
inpStr = inputBox.getString("Enter gender:");
gender = inpStr.charAt(0);

person[i] = new Person( ); //create a new Person and assign values

person[i].setName ( name );
person[i].setAge ( age );
person[i].setGender( gender );
}
Person Array Processing – Sample 2
 Find the youngest and oldest persons.
int minIdx = 0; //index to the youngest person
int maxIdx = 0; //index to the oldest person

for (int i = 1; i < person.length; i++) {

if ( person[i].getAge() < person[minIdx].getAge() ) {


minIdx = i; //found a younger person

} else if (person[i].getAge() > person[maxIdx].getAge() ) {

maxIdx = i; //found an older person


}
}

//person[minIdx] is the youngest and person[maxIdx] is the oldest


Object Deletion – Approach 1

int delIdx = 1;
Delete Person B by
A person[delIdx] = null; setting the reference in
position 1 to null.

person person

0 1 2 3 0 1 2 3

A B C D A C D

Before A is executed After A is executed


Object Deletion – Approach 2

int delIdx = 1, last = 3; Delete Person B by


setting the reference in
A person[delIndex] = person[last];
position 1 to the last
person[last] = null; person.

person person

0 1 2 3 0 1 2 3

A B C D A D C

Before A is executed After A is executed


Person Array Processing – Sample 3
 Searching for a particular person. Approach 2 Deletion is
used.
int i = 0;

while ( person[i] != null && !person[i].getName().equals("Latte") ) {


i++;
}

if ( person[i] == null ) {
//not found - unsuccessful search
System.out.println("Ms. Latte was not in the array");

} else {
//found - successful search
System.out.println("Found Ms. Latte at position " + i);
}
Contoh Program
class Person
{
private String lastName;
private String firstName;
private int age;
public Person(String last, String first, int a)
public void displayPerson()
}
class ClassDataArray
{
private Person[] a; // reference to array
private int nElems; // number of data items

public ClassDataArray(int max) // constructor


{
a = new Person[max]; // create the array
nElems = 0; // no items yet
}
public void insert(String last, String first, int age)
{
a[nElems] = new Person(last, first, age);
nElems++;
}
public Person find(String searchName)
public boolean delete(String searchName)
public void displayA()
}
class ClassDataApp
{
public static void main(String[] args)
{
int maxSize = 100; // array size
ClassDataArray arr; // reference to array
arr = new ClassDataArray(maxSize); //
create the array
// insert items
arr.insert(“Evans”, “Patty”, 24);
}
}
Pertanyaan
 Kita telah membuat obyek daftar CD dan
sudah mendefinisikan array sebanyak 10. Ke
dalam daftar CD sudah ditambahkan obyek
CD sebanyak 10 (Sudah penuh atau belum
yah ?).
 Berikutnya, ternyata sebuah jenis CD sudah
habis, maka obyek CD pada array urutan ke 5
dihapus.
 Jika kemudian terdapat CD baru yang akan
ditambahkan, apa yang terjadi ?
Simpulan
 Definisikan kelebihan dan kelemahan array.

You might also like