Array Objectives Dapat menggunakan array dan Vector Dapat membuat array multi-dimensi
11 July 2013 Algoritma & Pemrograman 2
Outline Array Vector
11 July 2013 Algoritma & Pemrograman 3
Array Array adalah suatu koleksi unsur-unsur yang bertipe sama (homogen), dimana setiap unsur dapat diakses secara terpisah dengan menggunakan suatu indeks Komponen (unsur) dapat bertipe primitif atau reference Bisa diilustrasikan sebagai laci-laci yang berisi benda yang sejenis dan diberikan nomor urut
11 July 2013 Algoritma & Pemrograman 4
Deklarasi Array [1] int[] daftar = new int[5]; Mendefinisikan suatu variabel array bernama daftar yang pada mulanya menunjuk/refer ke sebuah object array yang terdiri dari 5 buah integer, dengan inisialisasi default = 0
11 July 2013 Algoritma & Pemrograman 5
Deklarasi Array [2] int[] daftar; Tipe dari variabel daftar adalah int[]. Ini berarti variabel daftar dapat berisi reference ke object array of integer. Bukan berisi object array of integer! Kemudian dibuat sebuah object array integer dengan menggunakan operator new new typename[length] Ingat: operator new mengembalikan sebuah reference ke object yang baru dibuat. Reference ke object array yang baru dibuat kemudian disimpan dalam variabel daftar. daftar = new int[5]; 11 July 2013 Algoritma & Pemrograman 6 Deklarasi Array [3] int[] daftar = new int[5]; Banyaknya unsur dalam suatu array ditentukan pada waktu array itu dibuat dengan operator new, dan setelah itu tidak dapat diubah lagi. Banyaknya unsur dapat dalam sebuah array dapat diketahui dari field length Contoh: daftar.length bernilai 5 Ingat bahwa: int [] daftar; hanya mengalokasikan untuk sebuah reference ke array of integer, bukan mengalokasikan object array of integer. daftar [0] = 0; // error
11 July 2013 Algoritma & Pemrograman 7
Mengakses Elemen dalam Array Elemen dalam array diakses dengan menggunakan indeks-nya Unsur pertama array berindeks 0 (nol) dan unsur terakhir ber-indeks length - 1 Contoh: daftar[3] = 10; daftar[0] = daftar[3] * 10;
Pengaksesan unsur array dengan indeks diluar
batas akan menyebabkan exception ArrayIndexOutOfBoundsException. 11 July 2013 Algoritma & Pemrograman 8 Inisialisasi Array Array dapat dibuat dan di-init dalam satu deklarasi. Contoh: int[] nomor = {1, 2, 3, 4, 5}; float[] deposit = {150.0F, 275.5F, 184.4F}; String[] menu = {“Open”, “Close”, “Save”, “Quit”};
Karena array adalah object, jika tidak ada yang
merefer ke object tersebut, akan di-garbage- collected nomor = null; 11 July 2013 Algoritma & Pemrograman 9 Meng-copy Array [1] Variabel array cara kerjanya seperti variabel object. Yang disimpan hanya reference ke array yang sebenarnya. Jika variabel array di-copy, maka yang di-copy adalah reference-nya! double[] data = new double[10]; ...//fill array double[] prices; prices = data;
11 July 2013 Algoritma & Pemrograman 10
Meng-copy Array [2] Jika ingin melakukan cloning sebuah array, buat sebuah array yang sama besarnya, kemudian copy semua nilai- nya double[] prices = new double[data.length]; for (int ii = 0; ii < data.length; ii++) { prices[ii] = data[ii]; } Atau gunakan method statis System.arrayCopy System.arrayCopy (from, fromStart, to, toStart, count); System.arrayCopy (data, 0, prices, 0, data.length);
11 July 2013 Algoritma & Pemrograman 11
Array Assignment Variabel array dapat di-assign kepada variabel array lain, jika tipe unsur sama dan jumlah dimensi sama int[] kopi = {1, 4, 9, 16}; int[] kue = {3}; kue = kopi; kue[3] = 8; // ok, karena kue sekarang // punya 4 unsur
11 July 2013 Algoritma & Pemrograman 12
Array sbg Parameter Method / Return Value Array bisa saja menjadi parameter atau return type dari sebuah method, contoh: public static void main (String[] args) Karena yang disimpan dalam variabel array adalah reference, maka yang di-pass ke dalam method adalah reference-nya! Ingat! Karena yang di-pass adalah referencenya, maka .... (ingat tentang passing reference ke method) Method perlu return suatu array apabila ia menghasilkan suatu koleksi nilai-nilai yang bertipe sama.
11 July 2013 Algoritma & Pemrograman 13
Array sebagai Parameter Method berikut mencari elemen terkecil dalam array public static int minValue (int[] data) { double lowest = data[0]; for (int i = 1; i <data.length; i++) { if (data[i] < lowest) { lowest = data[i]; } } return lowest; }
11 July 2013 Algoritma & Pemrograman 14
Array sebagai Return Value Method ini mengembalikan/menghasilkan suatu array integer acak/random import java.util.Random; public static int[] randomData (int length, int n) { Random generator = new Random(); int[] data = new int[length]; for (int i = 0; i < data.length; i++) { data[i] = generator.nextInt (n); } return data; }
11 July 2013 Algoritma & Pemrograman 15
Wrapper Class Setiap tipe data primitif mempunyai tipe kelas yang bersesuaian (dalam package java.lang) boolean - Boolean char - Character byte - Byte short - Short int - Integer long - Long float - Float double - Double void - Void Kelas-kelas pembungkus ini (wrapper) ini berguna apabila kita perlu memperlakukan tipe primitif sebgai object. Kelas-kelas ini juga mengandung konstantakonstanta dan method-method yang berguna 11 July 2013 Algoritma & Pemrograman 16 Array Of Objects Hati-hati dengan array of objects! Integer[] abc = new Integer[20]; Statement di atas membuat object array yang dapat menampung 20 reference ke object Integer Statement di atas tidak membuat 20 object Integer abc[3].toString() // NullPointerException Jadi, sebelum mengakses object dalam array, buat terlebih dahulu object-nya. abc[3] = new Integer (12);
11 July 2013 Algoritma & Pemrograman 17
Array Multi-dimensi [1] Statement int[][] tabel = new int[5][8]; melakukan 3 hal: mendeklarasikan suatu variabel reference bernama tabel dengan tipe int[][] (array of array of int) mengalokasikan secara dinamik sebuah array yang terdiri dari 5 unsur. Tiap unsur dari array ini bertipe int[] mengalokasikan secara dinamik 5 array, masingmasing terdiri dari 8 int.
11 July 2013 Algoritma & Pemrograman 18
Array Multi-Dimensi [2] int[][] tabel = new int[5][8];
11 July 2013 Algoritma & Pemrograman 19
Array Multi-Dimensi [3] Buat sebuah matriks 3x4 yang berisi: 1 1 1 1 2 4 8 16 3 9 81 243 pada baris i, kolom j: nilainya (i+1)^(j+1) Deklarasikan variabel dan buat array int[][] pangkat = new int[3][4];
11 July 2013 Algoritma & Pemrograman 20
Array Multi-Dimensi [4] Gunakan nested loop untuk mengisi matriks/array tersebut for (int ii = 0; ii < pangkat.length; ii++) { for (int jj = 0; jj < pangkat[ii].length; jj++) { pangkat[ii][jj] = (int) Math.pow (ii + 1, jj + 1); } }
Latihan: Buat nested loop untuk mencetak
semua elemen yang ada dalam matriks/array
11 July 2013 Algoritma & Pemrograman 21
Array Multi Dimensi Dengan Panjang Baris Berbeda
Contoh: inisialisasi matriks segitiga
int[][] tabel = new int[5][]; for (int ii = 0; ii < tabel.length; ii++) { // buat object array untuk satu baris int temp[] = new int[i+1];
for (int jj = 0; jj <= i; jj++) {
temp[jj] = jj; } tabel[ii] = temp; } int[][] tabel = new[][4]; // tidak boleh
11 July 2013 Algoritma & Pemrograman 22
Apakah Array Adalah Object? [1] public class ABC { byte b; } public class TestTipe { ... static void testObject (Object o) { System.out.println ("Object? “ + (o instanceof Object)); } static void testABC (Object o) { System.out.println ("ABC? ” + (o instanceof ABC)); } } 11 July 2013 Algoritma & Pemrograman 23 Apakah Array Adalah Object? [2] public class TestTipe { ... static void testObjectArray (Object o) { System.out.println ("ObjectArray? " + (o instanceof Object[])); } static void testABCArray (Object o) { System.out.println ("ABCArray? " + (o instanceof ABC[])); } }
11 July 2013 Algoritma & Pemrograman 24
Apakah Array Adalah Object? [3] public class TestTipe { static public void main (String[] a) { ABC x = new ABC (); ABC[] xArray = new ABC[3]; System.out.println ("ABC object: "); testObject (x); testABC (x); testObjectArray (x); testABCArray (x); System.out.println ("\nABC array object: "); testObject (xArray); testABC (xArray); testObjectArray (xArray); testABCArray (xArray) } ... } 11 July 2013 Algoritma & Pemrograman 25 Apakah Array Adalah Object? [4] Output: ABC object: Object? true ABC? true ObjectArray? false ABCArray? false ABC array object: Object? true ABC? false ObjectArray? true ABCArray? true
11 July 2013 Algoritma & Pemrograman 26
Vector Sebelum array dapat digunakan, programmer harus menyatakan terlebih dahulu besar array. Dan besar array itu tidak bisa bertambah besar (growable). Bisa kita gunakan class Vector dalam package java.util untuk array yang besarnya dinamis
11 July 2013 Algoritma & Pemrograman 27
Ringkasan Gunakan array untuk mengumpulkan data yang bertipe sama (homogen). Masing-masing unsur diakses dengan menggunakan indeks-nya. Array dapat dijadikan parameter atau return value dalam sebuah method. Gunakan java.util.Vector untuk array of Object yang bisa bertambah besar (growable).