MAP Dalam Java.
Map adalah
Sebuah Objek yang memetakan satu kunci ke satu nilai seperti array assosiatif.
Map menghubungkan objek di satu kumpulan dan objek di kumpulan lain seperti
kamus yang menghubungkan definisi dengan kata atau buku telepon menghubungkan
nama dan nomor telepon. Map mirip dengan apa yang kita sebut "list
asosiasi" .
Map
mendefinisikan
operasi dasar dari struktur data tersebut, tapi tidak menjelaskan bagaimana
struktur data dan operasinya diimplementasikan.
"Map"
tidak menyatakan bagaimana data disimpan. List bisa diimplementasikan dalam
bentuk array, list berantai, atau map yang menghubungkan elemen list dengan
angka 0, 1, 2, ....
Kelas Map
Suatu array
yang berisi N elemen bisa juga dilihat sebagai asosiasi (pemetaan) antara
elemennya dengan bilangan 0, 1, ..., N-1 yang merupakan indeksnya. Jika i
adalah salah satu bilangan ini, maka kita bisa mengambil elemen yang dipetakan
oleh bilangan i, dan juga kita bisa meletakkan elemen baru pada posisi ke-i.
Suatu peta
(map) adalah generalisasi dari array. Seperti array, map juga memiliki operasi
untuk mengambil dan meletakkan elemen. Akan tetapi pada map, operasi ini tidak
dilakukan pada bilangan 0, 1, ... N-1, akan tetapi pada sembarang
Object
.
Beberapa
bahasa pemrograman menggunakan istilah array asosiatif (associative array)
karena kesamaan perintah dengan array biasa. Pada bahasa pemrograman tersebut,
kita bisa menuliskan
A["joko"]
yang
digunakan untuk memetakan "joko" pada suatu elemen di dalam array.
Java tidak
menggunakan perintah yang sama pada map, akan tetapi idenya serupa : Map adalah
seperti array yang indeksnya adalah objek sembarang, bukan integer. Pada map,
objek yang digunakan sebagai "indeks" disebut kunci (key). Objek yang
ditunjuk oleh indeks tersebut disebut nilai (value).
Satu kunci
hanya boleh menunjuk pada satu nilai, akan tetapi satu nilai bisa ditunjuk oleh
beberapa kunci.
Dalam Java, map didefinisikan dalam interface
java.util.Map
, yang memiliki beberapa metode
untuk bekerja dengan map. Jika map
adalah
variabel dengan tipe Map
, maka
berikut ini adalah beberapa metodenya :map.get(kunci)
-- mengembalikanObject
yang ditunjuk olehkunci
. Jika map tidak memiliki nilai yang ditunjuk olehkunci
, maka nilainull
akan dikembalikan. Tapi ingat juga bahwa mungkin saja kuncinya ada akan tetapi memang menunjuk pada nilainull
. Menggunakan "map.get(kunci)
" sama dengan perintah "A[kunci]
" pada array A. (Akan tetapi pada map tidak ada pengecualianIndexOutOfBoundsException
).map.put(kunci, nilai)
-- Mengisi map dengan pasangankunci
dannilai
. Kedua-duakunci
dannilai
bisa berupa objek apa saja. Jika map tersebut telah memilikikunci
maka nilai yang ditunjuk akan diganti dengan yang baru diberikan. Perintah ini mirip dengan "A[kunci] = nilai
" pada array.map.putAll(map2)
-- jikamap2
adalah map lain, maka perintah ini akan mengkopi semua isi padamap2
ke dalammap
.map.remove(kunci)
-- Jikamap
memilikikunci
yang menunjuk pada suatu nilai, perintah ini akan menghapuskunci
beserta nilai yang ditunjuknya, atau dengan kata lain menghapus pasangan kunci dan nilai pada map sekaligus.map.containsKey(kunci)
-- mengembalikan nilai boolean true jika map memilikikunci
yang merujuk pada suatu nilaimap.containsValue(nilai)
-- mengembalikan nilai boolean true jika map memilikinilai
yang ditunjuk oleh kunci apapun.map.size()
-- mengembalikanint
yang berisi jumlah pasangan asosiasi pada map.map.isEmpty()
-- mengembalikan boolean true jika map tidak berisi pasangan asosiasi apa-apa.map.clear()
-- menghapus semua pasangan asosiasi dalam map.
Metode
put
dan get
jelas
merupakan metode yang paling sering digunakan dalam map. Dalam banyak aplikasi,
metode ini mungkin hanya metode ini yang kita butuhkan. Artinya, menggunakan
map sama mudahnya dengan menggunakan array biasa.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 menggunakan Map
. 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
Dalam metode
ambilNomor
di atas,
nilai kembalian dari info.get(nama)
di-type-cast
ke dalam String
. Karena
kembalian dari metode get()
bertipe Object
maka type cast menjadi penting sebelum nilainya bisa digunakan.
Dengan "membungkus"
Map
di dalam
kelas BukuTelepon
, kita menyembunyikan type-cast dalam implementasinya sehingga
interaksi kelas ini dengan kelas lain yang menggunakannya menjadi lebih
natural.
Pendeklarasian
HashMap<k,v>
nama_variabel = new HashMap<k,v>();
Keterangan:
k adalah
tipe data dari kunci
v adalah
tipe data dari nilai
Contoh:
Buatlah
satu projek Java bernama hashmap.
Lalu isi
dengan kode seperti dibawah ini:
import java.util.HashMap;
public
class hashmap {
public
static void main(String[] args) {
HashMap<String,
String> data=new HashMap<String, String>();
data.put(“PHP”,
“200″);
data.put(“JAVA”,
“155″);
data.put(“Android”,
“300″);
System.out.println(“Data
thread dari kategori forum”);
System.out.println(data);
}
}
Keterangan:
data.put(“PHP”,
“200″), kode ini digunakan untuk menambah data ke objek Map dengan kunci =”PHP”
dan nilai=”200″.
Hasil:
Jalankan
program diatas maka akan menghasilkan tulisan seperti dibawah ini: Data thread
dari kategori forum
{Android=300,
PHP=200, JAVA=155}
Jika
tutorial ini bermanfaat silahkan katakan ‘Terima Kasih‘.
Categories:
Java
Tidak ada komentar:
Posting Komentar