Map & Set

Map & Set πŸ—ΊοΈ

Selain List, Dart menyediakan dua struktur data penting: Map untuk menyimpan pasangan kunci-nilai, dan Set untuk menyimpan koleksi nilai yang unik.


Map β€” Pasangan Key-Value

Map menyimpan data dalam format kunci: nilai (seperti kamus atau objek JSON):

// Membuat Map
Map<String, int> umur = {
  'Budi': 25,
  'Ani': 22,
  'Citra': 28,
};

Map<String, dynamic> profil = {
  'nama': 'Budi Santoso',
  'umur': 25,
  'aktif': true,
};

// Map kosong
Map<String, String> kosong = {};
var data = <String, int>{};

Mengakses & Mengubah Map

Map<String, int> umur = {'Budi': 25, 'Ani': 22};

// Akses nilai berdasarkan key
print(umur['Budi']);   // 25
print(umur['Citra']);  // null (key tidak ada)

// Tambah atau ubah nilai
umur['Citra'] = 28;  // tambah key baru
umur['Budi'] = 26;   // ubah nilai yang ada

print(umur); // {Budi: 26, Ani: 22, Citra: 28}

// Hapus pasangan
umur.remove('Ani');
print(umur); // {Budi: 26, Citra: 28}

Mengecek & Mengiterasi Map

Map<String, int> nilai = {'Matematika': 90, 'Fisika': 85, 'Kimia': 78};

// Cek key dan value
print(nilai.containsKey('Fisika'));  // true
print(nilai.containsValue(100));     // false
print(nilai.length);                  // 3

// Daftar keys dan values
print(nilai.keys);   // (Matematika, Fisika, Kimia)
print(nilai.values); // (90, 85, 78)

// Iterasi dengan forEach
nilai.forEach((mapel, skor) {
  print('$mapel: $skor');
});

// Iterasi dengan for-in pada entries
for (var entry in nilai.entries) {
  print('${entry.key}: ${entry.value}');
}

Operasi Berguna pada Map

Map<String, int> stok = {'apel': 10, 'mangga': 5};

// putIfAbsent β€” tambah hanya jika key belum ada
stok.putIfAbsent('jeruk', () => 15);
print(stok); // {apel: 10, mangga: 5, jeruk: 15}

// Akses aman dengan nilai default menggunakan ??
int jumlah = stok['durian'] ?? 0;
print(jumlah); // 0

// Update nilai yang ada
stok.update('apel', (v) => v + 5); // 10 + 5 = 15
print(stok['apel']); // 15

Set β€” Koleksi Unik

Set menyimpan nilai tanpa duplikasi dan tanpa urutan tertentu:

// Membuat Set
Set<String> hobi = {'membaca', 'coding', 'memasak'};
Set<int> angka = {1, 2, 3, 4, 5};

// Set kosong
Set<String> kosong = {};

// Duplikat otomatis dihapus!
Set<int> contoh = {1, 2, 2, 3, 3, 3, 4};
print(contoh); // {1, 2, 3, 4}

Operasi Set

Set<String> a = {'apel', 'mangga', 'jeruk'};
Set<String> b = {'mangga', 'jeruk', 'pisang'};

// Tambah & hapus
a.add('pisang');
a.remove('apel');
print(a.contains('mangga')); // true

// Union β€” gabungan (semua elemen unik dari keduanya)
print(a.union(b));

// Intersection β€” irisan (elemen yang ada di keduanya)
print(a.intersection(b));

// Difference β€” selisih (elemen di a tapi tidak di b)
print(a.difference(b));

Perbandingan List, Map, dan Set

Fitur List Map Set
Terurut? Ya Tidak (umumnya) Tidak
Elemen unik? Tidak Key unik, value boleh sama Ya
Diakses dengan Indeks angka Key Tidak bisa diakses langsung
Kapan digunakan Urutan penting Data berpasangan Nilai unik tanpa duplikat

Konversi Antar Koleksi

// List ke Set (hapus duplikat)
List<int> listDuplikat = [1, 2, 2, 3, 3, 4];
Set<int> setUnik = listDuplikat.toSet();
print(setUnik); // {1, 2, 3, 4}

// Set ke List
List<int> listDariSet = setUnik.toList();

// Map keys dan values ke List
Map<String, int> data = {'a': 1, 'b': 2};
List<String> keys = data.keys.toList();
List<int> values = data.values.toList();

πŸ’‘ Tips: Gunakan List saat urutan penting atau ada duplikat yang diizinkan. Gunakan Set saat kamu butuh memastikan tidak ada duplikat. Gunakan Map saat kamu butuh mencari data berdasarkan kunci seperti id atau nama. Konversi antar ketiganya mudah dilakukan dengan .toList(), .toSet(), dll. πŸ—‚οΈ

Sebelumnya

Informasi Kursus

Kursus

Dart Dasar

Kategori

Koleksi

Durasi Pelajaran

20 menit

Pelajaran dalam Kategori Ini