Map #
Map
adalah salah satu struktur data koleksi di Dart yang memungkinkan penyimpanan pasangan kunci-nilai (key-value pairs). Setiap elemen di dalam Map
terdiri dari kunci (key) yang unik dan nilai (value) yang terkait dengan kunci tersebut. Map
sangat berguna ketika Anda perlu mengasosiasikan satu nilai dengan kunci tertentu, seperti kamus atau database sederhana.
Pengertian Map
#
Map
dalam Dart adalah koleksi pasangan kunci-nilai di mana setiap kunci harus unik. Ini berarti bahwa Anda tidak dapat memiliki dua elemen dengan kunci yang sama, meskipun nilai yang terkait dengan kunci tersebut bisa sama. Dart menyediakan beberapa cara untuk membuat dan memanipulasi Map
.
Contoh Sederhana:
void main() {
Map<String, int> skor = {
'Alice': 90,
'Bob': 85,
'Charlie': 95
};
print(skor['Alice']); // Output: 90
}
Pada contoh di atas, skor
adalah Map
yang mengasosiasikan nama-nama (kunci) dengan skor (nilai).
Membuat Map
#
Ada beberapa cara untuk membuat Map
dalam Dart:
Menggunakan Literal Map #
Cara paling umum untuk membuat Map
adalah dengan menggunakan literal Map, yang didefinisikan dengan tanda kurung kurawal {}
diikuti dengan pasangan kunci-nilai yang dipisahkan oleh tanda titik dua :
.
Contoh:
void main() {
Map<String, String> negaraIbukota = {
'Indonesia': 'Jakarta',
'Malaysia': 'Kuala Lumpur',
'Thailand': 'Bangkok'
};
print(negaraIbukota['Indonesia']); // Output: Jakarta
}
Menggunakan Konstruktor Map
#
Anda juga bisa membuat Map
menggunakan konstruktor dari kelas Map
. Ini berguna ketika Anda ingin membuat Map
kosong terlebih dahulu dan kemudian menambah elemen-elemen secara bertahap.
Contoh:
void main() {
Map<int, String> kodePos = Map();
kodePos[12345] = 'Jakarta';
kodePos[67890] = 'Bandung';
print(kodePos); // Output: {12345: Jakarta, 67890: Bandung}
}
Menggunakan Map.from
#
Dart menyediakan beberapa konstruktor untuk membuat Map
dari sumber lain, seperti Map.from
untuk membuat salinan Map
lain.
Contoh:
void main() {
Map<String, int> skor1 = {'Alice': 90, 'Bob': 85};
Map<String, int> skor2 = Map.from(skor1);
print(skor2); // Output: {Alice: 90, Bob: 85}
}
Menggunakan Map.of
#
Map.of
mirip dengan Map.from
, tetapi lebih fleksibel dan bisa digunakan untuk membuat Map
dari koleksi pasangan kunci-nilai lainnya.
Contoh:
void main() {
var skor = {'Alice': 90, 'Bob': 85};
Map<String, int> salinanSkor = Map.of(skor);
print(salinanSkor); // Output: {Alice: 90, Bob: 85}
}
Akses dan Manipulasi Elemen dalam Map
#
Akses Elemen #
Anda bisa mengakses nilai di dalam Map
menggunakan kunci sebagai indeks. Jika kunci tidak ada, hasilnya akan null
.
Contoh:
void main() {
Map<String, int> skor = {'Alice': 90, 'Bob': 85};
print(skor['Alice']); // Output: 90
print(skor['Charlie']); // Output: null (kunci tidak ada)
}
Menambah atau Mengubah Elemen #
Anda bisa menambah atau mengubah elemen dalam Map
dengan menetapkan nilai baru ke kunci yang ada atau kunci baru.
Contoh:
void main() {
Map<String, int> skor = {'Alice': 90, 'Bob': 85};
skor['Charlie'] = 95; // Menambah elemen baru
skor['Alice'] = 92; // Mengubah nilai untuk kunci yang ada
print(skor); // Output: {Alice: 92, Bob: 85, Charlie: 95}
}
Menghapus Elemen #
Anda bisa menghapus elemen dari Map
menggunakan metode remove()
.
Contoh:
void main() {
Map<String, int> skor = {'Alice': 90, 'Bob': 85};
skor.remove('Alice');
print(skor); // Output: {Bob: 85}
}
Memeriksa Kunci atau Nilai #
Dart menyediakan metode seperti containsKey()
dan containsValue()
untuk memeriksa apakah kunci atau nilai tertentu ada dalam Map
.
Contoh:
void main() {
Map<String, int> skor = {'Alice': 90, 'Bob': 85};
print(skor.containsKey('Alice')); // Output: true
print(skor.containsValue(85)); // Output: true
}
Iterasi pada Map
#
Anda dapat mengiterasi elemen-elemen dalam Map
menggunakan beberapa cara:
Iterasi Kunci #
Menggunakan for-in
loop untuk mengiterasi kunci-kunci dalam Map
.
Contoh:
void main() {
Map<String, int> skor = {'Alice': 90, 'Bob': 85};
for (var kunci in skor.keys) {
print('$kunci: ${skor[kunci]}');
}
}
Iterasi Nilai #
Menggunakan for-in
loop untuk mengiterasi nilai-nilai dalam Map
.
Contoh:
void main() {
Map<String, int> skor = {'Alice': 90, 'Bob': 85};
for (var nilai in skor.values) {
print(nilai);
}
}
Iterasi Pasangan Kunci-Nilai #
Menggunakan forEach()
untuk mengiterasi setiap pasangan kunci-nilai.
Contoh:
void main() {
Map<String, int> skor = {'Alice': 90, 'Bob': 85};
skor.forEach((kunci, nilai) {
print('$kunci: $nilai');
});
}
Metode dan Properti Umum pada Map
#
Dart menyediakan berbagai metode dan properti yang bisa digunakan untuk memanipulasi dan mengelola Map
.
length
: Mendapatkan jumlah elemen dalamMap
.isEmpty
: Mengecek apakahMap
kosong.isNotEmpty
: Mengecek apakahMap
tidak kosong.keys
: Mendapatkan iterable dari semua kunci dalamMap
.values
: Mendapatkan iterable dari semua nilai dalamMap
.clear()
: Menghapus semua elemen dariMap
.putIfAbsent(key, () => value)
: Menambah nilai hanya jika kunci tidak ada.update(key, (value) => newValue)
: Mengupdate nilai yang ada dengan nilai baru berdasarkan fungsi.
Contoh Penggunaan:
void main() {
Map<String, int> skor = {'Alice': 90, 'Bob': 85};
print(skor.length); // Output: 2
print(skor.isEmpty); // Output: false
print(skor.keys); // Output: (Alice, Bob)
print(skor.values); // Output: (90, 85)
skor.update('Alice', (nilai) => nilai + 10);
print(skor['Alice']); // Output: 100
skor.putIfAbsent('Charlie', () => 95);
print(skor); // Output: {Alice: 100, Bob: 85, Charlie: 95}
skor.clear();
print(skor.isEmpty); // Output: true
}
Menggabungkan Map
#
Anda dapat menggabungkan dua atau lebih Map
menggunakan operator addAll()
atau menggunakan spread operator ...
.
Contoh Menggunakan addAll()
:
void main() {
Map<String, int> map1 = {'Alice': 90};
Map<String, int> map2 = {'Bob': 85};
map1.addAll(map2);
print(map1); // Output: {Alice: 90, Bob: 85}
}
Contoh Menggunakan Spread Operator:
void main() {
Map<String, int> map1 = {'Alice': 90};
Map<String, int> map2 = {'Bob': 85};
Map<String, int> combinedMap = {...map1, ...map2
};
print(combinedMap); // Output: {Alice: 90, Bob: 85}
}
Kesimpulan #
Map
dalam Dart adalah struktur data yang sangat kuat untuk menyimpan dan mengelola pasangan kunci-nilai. Dengan berbagai metode dan properti yang tersedia, Anda dapat dengan mudah membuat, mengakses, memodifikasi, dan mengiterasi elemen-elemen dalam Map
. Kemampuan untuk mengasosiasikan kunci dengan nilai tertentu menjadikan Map
ideal untuk banyak aplikasi, seperti penyimpanan data yang memerlukan pencarian cepat, penyusunan data berpasangan, dan pengelolaan konfigurasi. Memahami cara kerja Map
dalam Dart akan membantu Anda menulis kode yang lebih efisien dan fleksibel dalam menangani data.