Belajar Code...
Kelas Map
Java memiliki dua kelas yang mengimplementasikan interface
Map
, yaitu : TreeMap
dan HashMap
.
Dalam
TreeMap
, pasangan kunci/nilai disimpan secara berurutan dalam pohon terurut, yaitu diurut berdasarkan kuncinya. Supaya bisa bekerja dengan benar, maka hanya objek yang bisa dibandingkan saja yang bisa digunakan sebagai kunci. Artinya kelas kunci harus berupa kelas yang mengimplementasikan interface Comparable
, atau Comparator
harus diberikan pada konstruktornya pada saat TreeMap
dibuat.HashMap
tidak menyimpan pasangan kunci/nilai dalam urutan tertentu, sehingga tidak ada batasan objek apa yang bisa disimpan di dalamnya. Hampir semua operasi dapat berjalan lebih cepat pada HashMap
dibandingkan dengan TreeMap
.
Secara umum, lebih baik menggunakan
HashMap
kecuali kita butuh struktur data dalam urutan tertentu yang hanya bisa dilakukan dengan TreeMap
. Atau dengan kata lain, jika kita hanya menggunakan perintah put
dan get
, gunakan HashMap
.
Misalnya progrma direktori telefon, yaitu pada kelas
BukuTelepon
yang memiliki pasangan nama/nomor telepon. Kelas ini memiliki operasi tambahEntri(nama, nomor)
dan ambilNomor(nama)
, di mana nama
dan nomor
bertipe String
.
Dalam aplikasi pemrograman sebenarnya, kita tidak perlu lagi membuat kelas baru untuk mengimplementasikan
BukuTelepon
tersebut, artinya kita bisa langsung menggunakanMap
. Akan tetapi menggunakan Map
mungkin memiliki sedikit kerugian, karena kita dipaksa harus menggunakan Object
bukan String
.
Jika ini masalahnya, maka kita bisa membuat kelas baru yang menggunakan
Map
dalam implementasinya, seperti berikut :
import java.util.HashMap;
public class BukuTelepon {
// Menyimpan data telepon private HashMap info = new HashMap();
public void tambahEntri(String nama, String nomor) { // Menyimpan nomor telepon pada nama yang sesuai info.put(nama,nomor); }
public String ambilNomor(String nama) { // Mengambil nomor telepon dari nama // Kembalikan null jika tidak ada nomor telepon untuk nama tsb return (String)info.get(nama); }
} // akhir kelas BukuTelepon
public class BukuTelepon {
// Menyimpan data telepon private HashMap info = new HashMap();
public void tambahEntri(String nama, String nomor) { // Menyimpan nomor telepon pada nama yang sesuai info.put(nama,nomor); }
public String ambilNomor(String nama) { // Mengambil nomor telepon dari nama // Kembalikan null jika tidak ada nomor telepon untuk nama tsb return (String)info.get(nama); }
} // akhir kelas BukuTelepon
Dalam metodeambilNomor
di atas, nilai kembalian dariinfo.get(nama)
di-type-cast ke dalamString
. Karena kembalian dari metodeget()
bertipeObject
maka type cast menjadi penting sebelum nilainya bisa digunakan.Dengan "membungkus"Map
di dalam kelasBukuTelepon
, kita menyembunyikan type-cast dalam implementasinya sehingga interaksi kelas ini dengan kelas lain yang menggunakannya menjadi lebih natural.sumber: http://java.lyracc.com/print/131
Tidak ada komentar:
Posting Komentar
jangan lupa beri komentar dan join blognya yaa :)