ArrayList
Kelas
ArrayDinamisInt bisa digunakan jika kita membutuhkan array dengan batas maksimum yang tak terbatas. Akan tetapi jika kita ingin menyimpan BentukGeometri misalnya, kita harus membuat kelas baru. Kelas tersebut mungkin bernama ArrayDinamisBentukGeometri, dan akan tampak sama persis dengan ArrayDinamisInt dengan beberapa perubahan di mana "int" muncul akan diganti dengan "BentukGeometri". Juga demikian jika kita ingin membuat kelas ArrayDinamisDouble, ArrayDinamisPemain, dan sebagainya.Yang agak sedikit lucu adalah kelas tersebut sangat mirip isinya, hanya kelas-kelasnya saja yang berlainan. Akan sangat lebih baik apabila kita bisa membuat kelas umum yang berlaku untuk semua kelas. Hal ini disebut dengan pemrograman generik. Beberapa bahasa pemrograman seperti C++ memiliki fasilitas untuk melakukan pemrograman generik. Java tidak memiliki fasilitas seperti itu (maksudnya tidak sama persis). Tapi kita bisa membuat sesuatu yang mirip dengan itu pada Java dengan menggunakan struktur data yang memiliki tipe "
Object".Pada Java, setiap kelas adalah kelas turunan dari kelas yang bernama
Object. Artinya setiap objek dapat dirujuk oleh variabel bertiipe Object. Semua objek dapat dimasukkan dalam array bertipe Object[]. Jika suatu subrutin memiliki parameter formal bertipe Object, maka objek apapun bisa diberikan kepada subrutin tersebut.Jika kita buat kelas
ArrayDinamisObject, maka kita bisa menyimpan objek apapun. Ini sebenarnya bukan programming generik sebenarnya, dan tidak berlaku untuk tipe primitif seperti int dan double. Sebenarnya, kita tidak perlu membuat kelas ArrayDinamisObject sendiri, karena Java telah memiliki kelas standar yang dinamakan ArrayList yang sifatnya mirip dengan yang kita sebutkan sebelumnya.ArrayList disimpan dalam paket java.util, jadi jika kita ingin menggunakan kelas ArrayList dalam sebuat program, kita harus memberikan "import java.util.ArrayList;" atau "import java.util.*;" di awal program kita.Kelas
ArrayList berbeda dengan kelas ArrayDinamisInt dalam arti, objek ArrayList selalu memiliki ukuran tertentu, dan kita tidak boleh mengambil posisi di luar ukuran ArrayList. Dalam hal ini, ArrayList mirip seperti array biasa. Akan tetapi, ukuran ArrayList bisa bertambah kapan saja jika diperlukan. Kelas ArrayList memiliki banyak metode instansi. Kita akan jelaskan sebagian yang sangat berguna. Misalnya daftar adalah variabel dengan tipe ArrayList.daftar.size()-- Fungsi ini menghasilkan ukuranArrayListsaat ini. Posisi valid dalamdaftaradalah yang bernomor 0 hinggadaftar.size()- 1. Ingat bahwa ukurannya bisa nol. Panggilan konstruktornew ArrayList()akan membuatArrayListdengan ukuran nol.daftar.add(obj)-- Menambah objek di akhirArrayList, kemudian menambah ukurannya dengan 1. Parameterobjmerujuk pada objek dengan tipe apapun, atau bisa bernilainull.daftar.get(N)-- Mengambil nilai yang disimpan pada posisi N padaArrayList.Nharus bertipe bilangan bulat antara 0 hinggadaftar.size() - 1. JikaNberada di luar rentang ini, pesan kesalahan akan ditampilkan. Memanggil fungsi ini mirip dengan memanggil array sepertiA[N]untuk suatu array A. Akan tetapi kita tidak bisa menggunakandaftar.get(N)pada ekspresi di sebelah kiridaftar.get(N) = 5tidak boleh dilakukan)daftar.set(N, obj)-- Mengisi suatu objekobjdi posisiNdari suatuArrayList, dan mengganti apapun yang sudah disimpan sebelumnya pada posisiN. Bilangan bulatNharus berada pada rentang 0 hinggadaftar.size() - 1. Perintah ini mirip dengan perintahA[N] = objpada array A.daftar.remove(obj)-- Jika objek tersebut ada di dalamArrayList, maka objek tersebut akan dibuang. Elemen lain setelah posisi objek tersebut di dalamArrayListakan digeser satu posisi. Kemudian ukuranArrayListakan berkurang 1. Jikaobjterdapat dalamArrayListlebih dari satu kali, hanya yang pertama saja yang dibuang.daftar.remove(N)-- Untuk bilangan bulat N, maka perintah ini akan menghapus posisi ke-N padaArrayList.Nharus berada pada rentang 0 hinggadaftar.size() - 1. Elemen setelah ini akan digeser satu posisi. Kemudian ukuranArrayListberkurang 1.daftar.indexOf(obj)-- Fungsi untuk mencari suatu objekobjdi dalam ArrayList. Jika objek ditemukan, maka posisinya di dalamArrayListakan dikembalikan. Jika tidak, maka fungsi ini akan mengembalikan -1.
Misalnya,kita akan membuat pemain dalam game yang digambarkan dengan objek dengan tipe
Pemain. Pemain yang berada dalam game disimpan dalam ArrayList bernama paraPemain. Variabel ini dideklarasikan seperti : ArrayList paraPemain;dan kita inisialisasikan dengan objek kosong dengan perintah
paraPemain = new ArrayList();Jika pemainBaru adalah variabel yang bertipe
Pemain, maka pemain baru tersebut bisa ditambahkan ke dalam ArrayList dan ke dalam game dengan perintah :paraPemain.add(pemainBaru);dan jika pemain nomor
i keluar dari game, maka kita hanya perlu memberikan perintahparaPemain.remove(i);Atau jika
pemain adalah objek bertipe Pemain yang akan kita keluarkan dari game, maka kita bisa menggunakan perintahparaPemain.remove(pemain);
Semuanya terlihat sangat mudah. Satu-satunya kesulitan yang akan kita temui adalah ketika kita ingin mengambil nilai yang disimpan pada posisi
i di dalam ArrayList. Tipe keluaran fungsi ini adalah Object. Dalam hal ini objek yang diambil oleh fungsi ini sebenarnya bertipe Pemain. Supaya kita bisa menggunakan hasil keluarannya, maka kita perlu menggunakan casting tipe untuk mengubahnya menjadi tipe Player, dengan cara :Pemain pmn = (Pemain)paraPemain.get(i);
Misalnya, jika kelas
Pemain memiliki metode instansi yang dinamakan jalan() yang dipanggil ketika seorang pemain menjalankan dadu atau kartu, maka kita bisa menuliskan kode untuk memberi giliran kepada semua pemain untuk jalan, yaitu denganfor (int i = 0; i < paraPemain.size(); i++) { Pemain pmn = (Pemain)paraPemain.get(i); pmn.jalan(); }Dua baris di dalam perulangan
for tersebut dapat digabungkan dengan satu perintah :((Pemain)paraPemain.get(i)).jalan();
Perintah ini akan mengambil elemen pada
ArrayList mengcasting tipenya, kemudian memanggil metode jalan() pada pemain yang baru diambil tersebut. Tanda kurung di sekitar "(Pemain)paraPemain.get(i)" diperlukan karena aturan dalam Java sehingga perintah dalam kurung akan dijalankan terlebih dahulu sebelum metode jalan() dipanggil.Vector
Kelas
ArrayList diperkenalkan pada Java versi 1.2, sebagai salah satu kumpulan kelas yang digunakan untuk bekerja dengan sekumpulan koleksi objek. Jika akan bahas lebih lanjut tentang "kelas koleksi" pada bagian berikutnya. Versi awal Java tidak memiliki ArrayList, akan tetapi memiliki kelas yang sangat mirip yaitu java.util.Vector. Kita masih bisa melihat Vector digunakan pada program lama, dan dalam beberapa kelas standar Java, sehingga kita perlu tahu tentang kelas ini.Menggunakan
Vector mirip dengan menggunakan ArrayList. Perbedaannya adalah nama metode yang berbeda untuk melakukan tugas yang sama, atau nama metode yang berbeda untuk melakukan tugas yang sama.Seperti
ArrayList, suatu Vector mirip dengan array Object yang bisa berkembang jika diperlukan. Konstruktor new Vector() membuat vektor tanpa elemen.Misalnya
vec adalah suatu Vector. Maka :vec.size()adalah fungsi untuk mengembalikan jumlah elemen di dalam vektor.vec.addElement(obj)akan menambahkanObjectobjdi akhir vektor. Sama dengan metodeadd()padaArrayList.vec.removeElement(obj)menghapusobjdari dalam vektor, kalau ada. Hanya objek pertama yang ditemui akan dihapus. Sama denganremove(obj)pada kelasArrayListvec.removeElementAt(N)menghapus elemen ke-N. N harus berada pada rentang 0 hinggavec.size() - 1. Sama denganremove(N)padaArrayListvec.setSize(N)akan mengubah ukuran vektor menjadi N. Jika di dalam vektor terdapat elemen yang jumlahnya lebih banyak dari N, maka elemen lainnya akan dihapus. Jika lebih sedikit, maka tempat kosong akan diisi dengannull. KelasArrayListtidak memiliki metode seperti ini.
Vector memiiki banyak metode lagi, akan tetapi ini adalah metode yang sering digunakan. 


0 comments:
Post a Comment
Silahkan berkomentar diblog ini. Komentar sesuai dengan artikel yang bersangkutan bisa lebih membantu teman-teman lainnya.
Terima Kasih