Selain List, Dart menyediakan dua struktur data penting: Map untuk menyimpan pasangan kunci-nilai, dan Set untuk menyimpan koleksi nilai yang unik.
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>{};
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}
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}');
}
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 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}
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));
| 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 |
// 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. ποΈ
Kursus
Dart Dasar
Kategori
Koleksi
Durasi Pelajaran
20 menit