Navigasi buku
Algoritma Generik
Interface
Collection memiliki metode untuk melakukan beberapa
operasi dasar
pada koleksi. Karena "koleksi" adalah konsep yang sangat umum, maka
operasi yang bisa dilakukan oleh semua koleksi juga sesuatu yang sangat
umum. Misalnyakol adalah objek yang mengimplementasi
interface Collection. Berikut ini adalah operasi yang bisa
dilakukan.
- kol.size() -- mengembalikan int yang berisi banyaknya objek dalam suatu koleksi
- kol.isEmpty() -- mengembalikan boolean true jika koleksi kosong, atau ukurannya sama dengan 0
- kol.clear() -- menghapus semua objek dalam koleksi
- kol.contains(objek) -- mengembalikan nilai boolean jika
objekada dalam koleksi - kol.add(objek)
-- menambah
objekke dalam koleksi. Parameternya bisa berupaObjectapa saja. Beberapa koleksi bisa berisi nilainull, sementara yang lain tidak. Misalnya menambahkan objek ke dalamSettidak berpengaruh apa-apa jika objek tersebut sudah ada di dalamnya. - kol.remove(objek) -- membuang objek dari dalam koleksi, jika ada, dan mengembalikan nilai boolean yang menyatakan apakah objek tersebut ada atau tidak di dalam koleksi
- kol.containsAll(kol2)
-- mengembalikan nilai boolean jika semua objek dalam
kol2ada di dalam koleksikol. Parameternya bisa berupaCollectionapa saja. - kol.addAll(col2) -- menambahkan semua objek yang ada dalam koleksi
kol2ke dalamkol - kol.removeAll(kol2) -- menghapus semua objek di
kolyang ada padakol2 - kol.retainAll(kol2) -- menghapus semua objek pada
kolyang tidak ada padakol2. Hanya akan mempertahankan objek yang ada padakol2 - kol.toArray()
-- mengembalikan array bertipe
Object[]yang isinya semua item di dalam koleksi. Nilai yang dikembalikan bisa di-tipe cast ke dalam tipe array lain, jika perlu. Misalnya, jika kita tahu bahwa semua item di dalamkolbertipeString, maka(String[])kol.toArray()akan mengembalikan arrayStringyang berisi semua string di dalam koleksi.
Karena semua metode adalah turunan dari interface Collection,
maka metode ini harus didefinisikan pada semua objek yang
mengimplementasikan interface ini. Akan tetapi ada masalah yang timbul.
Misalnya ukuran suatu Collection tidak bisa diganti
setelah dibuat. Metode yang menambah atau membuang objek tidak bisa
digunakan untuk koleksi jenis ini. Meskipun mungkin legal untuk
memanggil metode ini, pengecualian akan dilemparkan ketika program
dijalankan. Jenis pengecualiannya bernama UnsupportedOperationException.
Ada
juga masalah efisiensi. Meskipun suatu operasi didefinisikan untuk
beberapa jenis koleksi, tentunya unjuk kerjanya tidak sama untuk semua
kelas. Bahkan untuk metode sesederhana size() bisa sangat
berbeda dari satu jenis koleksi ke jenis koleksi lainnya.
Untuk
beberapa jenis koleksi, waktu pengolahan sebanding dengan jumlah item
di dalam koleksi. Koleksi lain mungkin memiliki variabel instansi yang
melacak jumlah item di dalam koleksi, sehingga menjalankan
size() sama dengan mengambil nilai variabel instansi ini.
Artinya operasinya hanya dilakukan satu langkah saja, tidak peduli
berapa banyak item yang ada di dalam koleksi.
Ketika kita menggunakan koleksi, alangkah lebih baiknya untuk mengetahui seberapa efisien suatu operasi dilakukan untuk jenis koleksi tertentu. Kita harus bisa memilih koleksi yang cocok untuk masalah yang kita hadapi. Kita akan lihat lebih detail di bagian berikutnya.


