Dart dilinde Map Yapılarına Giriş

Gauloran

Kıdemli Moderatör
7 Tem 2013
8,096
585
local
Merhaba bu konuda Dart dilinde map yapısına ufak bir giriş yapıyoruz. Bu konu 0'dan İleri Seviyeye Mobil Uygulama Geliştirme Eğitimi verdiğim seri ile bağlantılıdır ve serinin 4.konusunda ufak bir link bırakacağım buraya geleceksiniz.

serinin şu anki hali:

0'dan İleri Seviyeye Mobil Uygulama Geliştirme Eğitimi Veriyorum #1
0'dan İleri Seviyeye Mobil Uygulama Geliştirme Eğitimi Veriyorum #2
0'dan İleri Seviyeye Mobil Uygulama Geliştirme Eğitimi Veriyorum #3

dart_programlama_dilinde_map_yapisi.PNG


Map yapısında Anahtar(key) : Değer(Value) çifti ile veriler depolanır. Örneğin illerin plakaları ve isimleri bu yapıya örnek verilebilir ya da telefon numaraları ile kişi adları map yapısına örnek verilebilir

Şimdi biraz örneklerle açıklayalım

diyelim bir müşteri geldi müşteri adı ahmet ve parası 20 olsun.
bunu tutmak için daha önce hiç map kullanmadık.
map iki tane parametre alır key ve value olarak değerleri tutar.

Kod:
 Map<String, int> users = {
    'ahmet' : 20,
    'mehmet': 30,
  };

  print('ahmetin parası ${users['ahmet']}');

users a gidip ahmet keyinin karşısındaki value yü bize verir yani 20 yi

Kod:
for(var item in users.keys){ //mapin keys metodu var keyleri bir iterable olarak verir bu kullanımı da hatırlıyoruz listlerden zaten yapacağı işlem users mapinin keylerini gezmek
    print("${item} - ${users[item]}");
  }

farklı bir kullanım senaryosuna bakalım tabii yukarıdaki kullanım daha kolay

Kod:
 for(var i =0; i<users.length; i++){
    print('${users.keys.elementAt(i)} - ${users.values.elementAt(i)}'); //elementAt metoduna bir indeks veriyorsun o indexi döndürüyor olayı bu
  }


bizim hayatımız maplerle geçecek çünkü servisler olacak servislerden cevaplar gelecek bu cevapları parse edip ekranlarda gösterirken mapleri kullanacağız hep

senaryomuz şöyle olsun banka olalım müşterimizin birden fazla hesabı olabilir olsun ahmet beyin 3 heasbı var sırasıyla 100,300,200 olsun
mehmet bey 2 hesabı olsun 30 50 olsun
veli bey 1 hesap 30 olsun
adamın hesaplarını kontrol edip herhangi bir hesapta 150tlden fazla olan varsa krediniz hazır de

Kod:
Map<String,List<int>> vbBank = {
    'ahmet': [100,300,200],
    'mehmet': [30,50],
    'veli': [30],
  };

vbBank['mehmet']= [30,50]; diyerek de ayrı ayrı bu şekilde verebilirdik fakat tek seferde verdik.

Kod:
for (var item in vbBank.keys){
    //bankanın tüm keylerini gezecek
    for(var money in vbBank[item]!){ //her bir key için örneğin ilk key için item ahmet oldu geldi buraya vbBank['ahmet'] te gez demiş oluyoruz o da bir listeydi 100,300,200 olan bir listede geziyoruz yani
      if(money>150){ //her bir itemi için bu listenin 150 den büyük mü diye kontrol yapıyoruz bir tane büyük olan bulduğumuz anda return dediğimiz için döngü bitiyor
        print('kredin hazır');
        break; //for döngüsünün bitmesini istiyorsak return diyerek bitiriyoruz döngüyü tabi burada break dememiz daha mantıklı ilgili scope u sonlandırdığı için o yüzden break dedik
      }
    }
  }

bankadaki müşterilerin hesalarının toplam mevlasını bulmak için

Kod:
for(var item in vbBank.keys){
    int result = 0;
    for(var money in vbBank[item]!){
      result = result+money;
    }
    print("$item senin toplam paran --> $result");
  }

 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.