CodeBlanks Logo Icon CodeBlanks

Map operations

[] ve .putIfAbsent ile Map yönetimini öğrenirsin.

Map işlemleri

Map'ten değer okumak için köşeli parantez kullanılır: ages['Ayşe'] 'Ayşe' anahtarının değerini verir. Yoksa null döner. Yeni çift eklemek de aynı sözdizimiyle olur: ages['Cem'] = 26;.

putIfAbsent ise yalnızca anahtar yoksa değer koyar: ages.putIfAbsent('Deniz', () => 30);. Anahtar zaten varsa hiçbir şey yapmaz; yoksa verilen fonksiyonu çağırıp sonuçunu saklar.

Çıkarmak için remove, tüm çiftleri görmek için entries kullanılır. length çift sayısını verir. Map anahtarı yoksa [] operatörü null döndüğü için null safety konusunu bir sonraki grupta detaylı göreceksin.

putIfAbsent vs update

putIfAbsent yalnızca anahtar yoksa değer koyar; varsa dokunmaz. update ise var olan değeri değiştirir; anahtar yoksa hata fırlatabilir ya da varsayılan bir değer üretebilir.

Örnek: ages.putIfAbsent('Cem', () => 25); 'Cem' yoksa 25 koyar. ages.update('Ayşe', (v) => v + 1); ise 'Ayşe'nin yaşını bir artırır.

İlk ekleme için putIfAbsent, değişiklik için update tercih edilir. Hangisini kullanacağına görevine göre karar verirsin.

Uygulama Telefon rehberi

Boş bir Map<String, String> oluştur. putIfAbsent ile iki kişinin adını anahtar, telefonunu değer yap. Sonra print ile rehberi yazdır.

Başlangıç kodu

main.dart
void main() {
  var phones = <String, String>{};
  // putIfAbsent ile iki kişi ekle

  // yazdır
}

Örnek çözüm

main.dart
void main() {
  var phones = <String, String>{};
  phones.putIfAbsent('Ayşe', () => '555-1000');
  phones.putIfAbsent('Mert', () => '555-2000');
  print(phones);
}

Beklenen çıktı

{Ayşe: 555-1000, Mert: 555-2000}

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 putIfAbsent ne zaman değer koyar?

  • Her zaman
  • Anahtar varsa
  • Hiçbir zaman
  • Anahtar yoksa Doğru cevap

Açıklama: putIfAbsent yalnız anahtar Map'te yoksa değer atar.

2 Değer oku

Soru
void main() {
  var ages = <String, int>{'Ayşe': 28};
  print(ages____);
}
Cevap
void main() {
  var ages = <String, int>{'Ayşe': 28};
  print(ages['Ayşe']);
}

Açıklama: köşeli parantez anahtarla değeri verir.

3 İşlemleri eşleştir

Kavram Anlamı
[] Değer oku/yaz
putIfAbsent Yalnız yoksa koy
update Var olanı değiştir
remove Anahtarı sil

Başlangıç bölümündeki tüm dersler