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 ukuranArrayList
saat ini. Posisi valid dalamdaftar
adalah yang bernomor 0 hinggadaftar.size()
- 1. Ingat bahwa ukurannya bisa nol. Panggilan konstruktornew ArrayList()
akan membuatArrayList
dengan ukuran nol.daftar.add(obj)
-- Menambah objek di akhirArrayList
, kemudian menambah ukurannya dengan 1. Parameterobj
merujuk pada objek dengan tipe apapun, atau bisa bernilainull
.daftar.get(N)
-- Mengambil nilai yang disimpan pada posisi N padaArrayList
.N
harus bertipe bilangan bulat antara 0 hinggadaftar.size() - 1
. JikaN
berada 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) = 5
tidak boleh dilakukan)daftar.set(N, obj)
-- Mengisi suatu objekobj
di posisiN
dari suatuArrayList
, dan mengganti apapun yang sudah disimpan sebelumnya pada posisiN
. Bilangan bulatN
harus berada pada rentang 0 hinggadaftar.size() - 1
. Perintah ini mirip dengan perintahA[N] = obj
pada array A.daftar.remove(obj)
-- Jika objek tersebut ada di dalamArrayList
, maka objek tersebut akan dibuang. Elemen lain setelah posisi objek tersebut di dalamArrayList
akan digeser satu posisi. Kemudian ukuranArrayList
akan berkurang 1. Jikaobj
terdapat dalamArrayList
lebih 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
.N
harus berada pada rentang 0 hinggadaftar.size() - 1
. Elemen setelah ini akan digeser satu posisi. Kemudian ukuranArrayList
berkurang 1.daftar.indexOf(obj)
-- Fungsi untuk mencari suatu objekobj
di dalam ArrayList. Jika objek ditemukan, maka posisinya di dalamArrayList
akan 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 menambahkanObject
obj
di akhir vektor. Sama dengan metodeadd()
padaArrayList
.vec.removeElement(obj)
menghapusobj
dari dalam vektor, kalau ada. Hanya objek pertama yang ditemui akan dihapus. Sama denganremove(obj)
pada kelasArrayList
vec.removeElementAt(N)
menghapus elemen ke-N. N harus berada pada rentang 0 hinggavec.size() - 1
. Sama denganremove(N)
padaArrayList
vec.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
. KelasArrayList
tidak memiliki metode seperti ini.
Vector
memiiki banyak metode lagi, akan tetapi ini adalah metode yang sering digunakan.
0 comments:
:f :D :i ;k :x :$ x( :?
:@ :~ :m :2 :s :sn :| :o
Post a Comment
Silahkan berkomentar diblog ini. Komentar sesuai dengan artikel yang bersangkutan bisa lebih membantu teman-teman lainnya.
Terima Kasih