unisbadri.com » Python Java Golang Typescript Kotlin Ruby Rust Dart PHP
Map

Map #

Dalam bahasa pemrograman Java, Map adalah antarmuka (interface) dalam koleksi framework yang menyimpan pasangan kunci (key) dan nilai (value). Tidak seperti List atau Set, Map tidak memperbolehkan kunci yang duplikat; setiap kunci hanya dapat berpasangan dengan satu nilai. Ada beberapa implementasi Map di Java, masing-masing dengan karakteristik dan penggunaan yang berbeda.

Jenis-jenis Map #

  1. HashMap
  2. LinkedHashMap
  3. TreeMap
  4. Hashtable
  5. ConcurrentHashMap

HashMap #

HashMap adalah implementasi Map yang paling umum digunakan. HashMap menggunakan tabel hash untuk menyimpan pasangan kunci-nilai, sehingga memungkinkan pencarian dan penyimpanan yang cepat.

Karakteristik #

  • Tidak Terurut: Elemen-elemen dalam HashMap tidak memiliki urutan tertentu.
  • Mengizinkan null: HashMap mengizinkan satu kunci null dan beberapa nilai null.
  • Performa Cepat: Operasi dasar (seperti get dan put) memiliki kompleksitas waktu rata-rata O(1).

Operasi Dasar #

  • Membuat HashMap

    Map<String, Integer> hashMap = new HashMap<>();
    
  • Menambahkan Pasangan Kunci-Nilai

    hashMap.put("A", 1);
    hashMap.put("B", 2);
    hashMap.put("C", 3);
    
  • Mengakses Nilai Berdasarkan Kunci

    int nilai = hashMap.get("A");
    
  • Menghapus Pasangan Kunci-Nilai Berdasarkan Kunci

    hashMap.remove("B");
    
  • Memeriksa Apakah Kunci atau Nilai Ada

    boolean adaKunci = hashMap.containsKey("C");
    boolean adaNilai = hashMap.containsValue(3);
    
  • Mendapatkan Ukuran HashMap

    int ukuran = hashMap.size();
    
  • Iterasi Melalui HashMap

    for (Map.Entry<String, Integer> entry : hashMap.entrySet()) {
        System.out.println(entry.getKey() + ": " + entry.getValue());
    }
    

LinkedHashMap #

LinkedHashMap adalah subclass dari HashMap yang mempertahankan urutan penyisipan. Ini berarti elemen-elemen akan dikembalikan dalam urutan di mana mereka dimasukkan ke dalam Map.

Karakteristik #

  • Terurut Berdasarkan Penyisipan: Urutan elemen dalam LinkedHashMap adalah urutan di mana mereka ditambahkan.
  • Mengizinkan null: Seperti HashMap, LinkedHashMap mengizinkan satu kunci null dan beberapa nilai null.
  • Lebih Lambat dari HashMap: Karena mempertahankan urutan, LinkedHashMap sedikit lebih lambat daripada HashMap.

Operasi Dasar #

Operasi pada LinkedHashMap sama seperti pada HashMap, tetapi dengan urutan elemen yang terjaga.

Map<String, Integer> linkedHashMap = new LinkedHashMap<>();
linkedHashMap.put("A", 1);
linkedHashMap.put("B", 2);
linkedHashMap.put("C", 3);

for (Map.Entry<String, Integer> entry : linkedHashMap.entrySet()) {
    System.out.println(entry.getKey() + ": " + entry.getValue());
}

Penjelasan: Output akan mempertahankan urutan penyisipan, misalnya: A: 1, B: 2, C: 3.

TreeMap #

TreeMap adalah implementasi Map yang menggunakan struktur data pohon (biasanya Red-Black Tree). TreeMap secara otomatis mengurutkan elemen-elemen berdasarkan kunci mereka.

Karakteristik #

  • Terurut: Elemen-elemen dalam TreeMap diurutkan berdasarkan kunci secara alami (natural order) atau berdasarkan Comparator yang ditentukan.
  • Tidak Mengizinkan null sebagai Kunci: TreeMap tidak mengizinkan null sebagai kunci.
  • Lebih Lambat dari HashMap: Operasi dasar memiliki kompleksitas waktu O(log n) karena penggunaan pohon.

Operasi Dasar #

  • Membuat TreeMap

    Map<String, Integer> treeMap = new TreeMap<>();
    
  • Menambahkan Pasangan Kunci-Nilai

    treeMap.put("C", 3);
    treeMap.put("A", 1);
    treeMap.put("B", 2);
    
  • Iterasi Melalui TreeMap

    for (Map.Entry<String, Integer> entry : treeMap.entrySet()) {
        System.out.println(entry.getKey() + ": " + entry.getValue());
    }
    

Penjelasan: Elemen-elemen dalam TreeMap akan diurutkan berdasarkan kunci, misalnya: A: 1, B: 2, C: 3.

Hashtable #

Hashtable adalah implementasi Map lama yang bersifat thread-safe. Hashtable mirip dengan HashMap tetapi memiliki beberapa perbedaan penting.

Karakteristik #

  • Thread-Safe: Semua metode dalam Hashtable disinkronkan, sehingga aman digunakan dalam lingkungan multithreading.
  • Tidak Mengizinkan null: Hashtable tidak mengizinkan null sebagai kunci atau nilai.
  • Lebih Lambat dari HashMap: Karena penyinkronan, Hashtable umumnya lebih lambat dibandingkan HashMap.

Operasi Dasar #

  • Membuat Hashtable

    Map<String, Integer> hashtable = new Hashtable<>();
    
  • Menambahkan Pasangan Kunci-Nilai

    hashtable.put("A", 1);
    hashtable.put("B", 2);
    
  • Mengakses Nilai Berdasarkan Kunci

    int nilai = hashtable.get("A");
    
  • Menghapus Pasangan Kunci-Nilai Berdasarkan Kunci

    hashtable.remove("B");
    

Penjelasan: Hashtable memberikan jaminan thread-safety dan tidak mengizinkan null, yang membuatnya berbeda dari HashMap.

ConcurrentHashMap #

ConcurrentHashMap adalah implementasi thread-safe dari Map yang dirancang untuk digunakan dalam lingkungan multithreading. Tidak seperti Hashtable, ConcurrentHashMap tidak menyinkronkan seluruh koleksi pada setiap operasi, melainkan membagi map menjadi beberapa segmen untuk meningkatkan efisiensi.

Karakteristik #

  • Thread-Safe: Dirancang khusus untuk kinerja tinggi dalam lingkungan multithreading.
  • Tidak Mengizinkan null: ConcurrentHashMap tidak mengizinkan null sebagai kunci atau nilai.
  • Lebih Efisien dalam Multithreading: Berkat segmentasi, operasi tidak memblokir seluruh map, sehingga memungkinkan paralelisme yang lebih tinggi.

Operasi Dasar #

  • Membuat ConcurrentHashMap

    Map<String, Integer> concurrentMap = new ConcurrentHashMap<>();
    
  • Menambahkan Pasangan Kunci-Nilai

    concurrentMap.put("A", 1);
    concurrentMap.put("B", 2);
    
  • Mengakses Nilai Berdasarkan Kunci

    int nilai = concurrentMap.get("A");
    

Penjelasan: ConcurrentHashMap sangat efisien dalam aplikasi yang membutuhkan operasi baca-tulis tinggi secara bersamaan.

Kesimpulan #

Dalam Java, Map adalah struktur data penting yang digunakan untuk menyimpan pasangan kunci-nilai. Berbagai implementasi Map memiliki karakteristik yang berbeda:

  • HashMap: Cepat dan tidak terurut, mengizinkan null.
  • LinkedHashMap: Mempertahankan urutan penyisipan, mengizinkan null.
  • TreeMap: Diurutkan secara alami atau berdasarkan comparator, tidak mengizinkan null sebagai kunci.
  • Hashtable: Thread-safe tetapi lebih lambat, tidak mengizinkan null.
  • ConcurrentHashMap: Thread-safe dan efisien dalam lingkungan multithreading, tidak mengizinkan null.

Dengan memahami karakteristik dan operasi dasar dari setiap jenis Map, Anda dapat memilih implementasi yang paling sesuai dengan kebutuhan spesifik aplikasi Anda.

« List
Date Time »