Map
Map digunakan untuk menghubungkan antara satu data (key) dengan data yang lain (value). Array dan List menggunakan indeks untuk menentukan data yang mana satu, manakala Map menggunakan key yang kita letak untuk merujuk data yang mana.
Antara class yang menggunakan interface Map
ialah HashMap
,
TreeMap
, dan LinkedHashMap
. Kalau perasan nama ketiga-tiga class
tersebut lebih kurang sama dengan nama untuk class Set. Ini bermaksud
fungsi ketiga-tiga class Map tersebut sama sahaja dengan class Set.
Contoh penggunaan Map:
package datastructure;
import java.util.HashMap;
import java.util.Map;
public class ContohMap {
public static void main(String[] args) {
Map<String, Double> harga = new HashMap<>();
harga.put("burger_ayam", 2.0);
harga.put("burger_ayam_special", 3.6);
harga.put("burger_ayam_double_special", 5.4);
System.out.printf("Harga burger ayam: RM %.2f", harga.get("burger_ayam"));
System.out.println();
}
}
Berpandukan Java API, interface Map adalah seperti berikut:
public interface Map<K,V>
Ini bermaksud kita perlu meletakkan dua jenis data untuk generics K
(key) dan V (value). Oleh itu, code di atas bermaksud key kita
ialah jenis String
dan value kita ialah jenis Double
.
Method yang boleh digunakan ialah,
put()
– untuk memasukkan dataget()
– untuk mengakses data menggunakan key
Cara untuk mendapatkan semua key
Kita boleh menggunakan method keySet()
untuk mendapatkan senarai
key yang ada dalam sesebuah Map:
package datastructure;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class ContohMap {
public static void main(String[] args) {
Map<String, Double> harga = new HashMap<>();
harga.put("burger_ayam", 2.0);
harga.put("burger_ayam_special", 3.6);
harga.put("burger_ayam_double_special", 5.4);
System.out.println("Senarai burger:");
Set<String> senaraiBurger = harga.keySet();
for (String burger : senaraiBurger) {
System.out.println(burger);
}
}
}
dan boleh digunakan seperti berikut:
package datastructure;
import java.util.HashMap;
import java.util.Map;
public class ContohMap {
public static void main(String[] args) {
Map<String, Double> harga = new HashMap<>();
harga.put("burger_ayam", 2.0);
harga.put("burger_ayam_special", 3.6);
harga.put("burger_ayam_double_special", 5.4);
for (String key : harga.keySet()) {
System.out.printf("Harga %s : RM %.2f", key, harga.get(key));
System.out.println();
}
}
}
Jika mahu ikut susunan seperti mana yang kita masukkan, tukar sahaja
dari HashMap
ke LinkedHashMap
.
MultiMap
MultiMap
ialah Map yang membenarkan satu key merujuk beberapa
value. Interface Map yang biasa hanya membenarkan satu key untuk
merujuk satu value sahaja. Java tidak menyediakan MultiMap tetapi
dengan sedikit trick, kita boleh membuat MultiMap menggunakan Map
yang biasa.
Trick tersebut adalah dengan menggunakan mana-mana data structure sebagai value, contohnya:
package datastructure;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ContohMap {
public static void main(String[] args) {
Map<String, List<String>> haiwan = new HashMap<>();
haiwan.put("karnivor", new ArrayList<>());
haiwan.get("karnivor").add("harimau");
haiwan.get("karnivor").add("singa");
haiwan.put("omnivor", new ArrayList<>());
haiwan.get("omnivor").add("beruang");
haiwan.get("omnivor").add("ayam");
for (String karnivor : haiwan.get("karnivor")) {
System.out.println(karnivor);
}
}
}