‫Ve son videolarda hash tabloları hakkında konuştuk.
‫Bu derste, hash tablolarının genel versiyonunun nasıl göründüğünü ve hash tablosunun genel versiyonunun
‫sözlük olduğunu tartışacağız.
‫Bu videoda sözlükleri nasıl kullanacağımızı göreceğiz.
‫Bir hash tablosuna benzer şekilde, bir sözlük değerini ve sözlükte olduğu gibi bir anahtar değer
‫çiftini depolayacaktır, tam da auto için anahtar değer çiftinin car olacağını söylediğimiz yerde.
‫Yani anahtar, Almanca araba anlamına gelen auto olacaktır.
‫Ve sonra car bu sözlüğün içindeki değer olacaktır.
‫Yani bu, örneğin Almanca İngilizce sözlükte gerçek dünyadan bir sözlük.
‫Ama şimdi programlama sözlüklerini kullanacağız.
‫Yani C-sharp sözlükleri, burada olduğu gibi bir anahtar değer çiftine sahiptir ve burada belirli bir anahtara atanan değeri
‫depolarız.
‫Evet.
‫Devam edelim ve bir sözlük tanımlayalım.
‫Microsoft belgelerine göre sözlük şu şekilde tanımlanmaktadır.
‫Yani bu sözlük rt değeri gibi bir şeye benzeyecek.
‫Bunun temel anlamı, örneğin bir liste için yaptığımıza benzer şekilde, bildirimde hem anahtarlarımızın
‫hem de değerlerimizin türlerini belirtmemiz gerektiğidir.
‫Dolayısıyla bir listenin de belirli bir türe sahip olması gerekiyordu.
‫Bir liste tamsayı türünde olabilir, dize türünde olabilir, nesne türünde olabilir vb.
‫Ancak bu listenin ne tür olması gerektiğini tanımlamamız gerekiyordu.
‫Aynı şey sözlük için de geçerlidir, ancak burada değer için olduğu kadar anahtar için de tanımlamamız gerekir.
‫Yani temelde bu anahtar ve RT değerinin anlamı budur.
‫Bu da çok fazla esnekliğe sahip olduğumuz, ancak hash tablosunda sahip olduğumuz esnekliğe sahip olmadığımız anlamına gelir.
‫Yani temel olarak devam edebilir ve buradaki gibi bir sözlük oluşturabiliriz; burada anahtarın integer
‫tipinde ve değerin string tipinde olacağını söyleriz.
‫Ve tabii ki sözlükleri kullanmak için koleksiyonların genel olduğu bir sistem kullandığımızdan emin olmamız
‫gerekir.
‫Gördüğünüz gibi sözlük genel bir koleksiyondur.
‫Başka bir videoda jenerik ve jenerik olmayan koleksiyonlar arasında bir fark olduğunu gördük.
‫Yani hash tabloları veya genel olmayan koleksiyonlar ve sözlükler genel koleksiyonlardır, bu nedenle tüm avantaj
‫ve dezavantajlara sahiptirler.
‫Şimdi bu sözlükte bir tamsayı, tabiri caizse bir sayı ve bir dize olacak bir değer olacak.
‫Böylece sayı anahtar ve dize değer olacaktır.
‫Şimdi burada sözlüğüm adlı bu sözlüğü oluşturuyoruz ve onu hemen boş bir sözlükle
‫başlatıyoruz.
‫Bu noktada, devam edebilir ve bu sözlüğü kullanabiliriz, böylece bu sözlüğe değerler ekleyebiliriz.
‫Örneğin, bu sözlüğün değerlerini de hemen tanımlayabiliriz.
‫Yani aynı çizgide, temelde tam burada.
‫Örneğin şöyle diyebiliriz: Tamam, sözlük bu şekilde görünecek.
‫Burada bir tamsayı ve bir dizemiz var.
‫Yani burada tamsayı olan anahtar ve metin olan da değer olacaktır.
‫Şimdi elimizde tamsayı türü ve ardından bu tamsayı her neyse onun İngilizce söylenişi var.
‫Yani bir bir, iki iki, üç üç ve bu şekilde devam eder.
‫Elbette sözlükler tamsayılar ve dizelerle sınırlı değildir.
‫Depoladığımız çok daha karmaşık değerleri kullanabiliriz.
‫Örneğin, buradaki sınıfı ele alalım.
‫Bu yüzden employee adında yeni bir sınıf oluşturuyorum.
‫Ben aynı dosyaya koyacağım ama tabii ki siz ayrı bir dosya oluşturabilirsiniz.
‫Dolayısıyla, her bir çalışan için satır, ad, yaş ve ücret gibi birkaç özelliğimiz var.
‫Ve sonra bir değişken olan maaşımız var ve sekiz kat, beş kat dört kat 12 oranını
‫döndürüyor.
‫Yani oran ne olursa olsun, çarpı, bu değer maaş olarak saklayacağımız veya alacağımız şey olacaktır.
‫Dolayısıyla, maaşı alacak olursak, bizim için maaşı doğrudan hesaplayacaktır.
‫Yani 8 saat çarpı beş gün çarpı dört hafta çarpı 12 ay.
‫Tabiri caizse, temel olarak yıllık maaş bu şekilde hesaplanacaktır.
‫Tabii ki, oranın katları.
‫Şimdi diyelim ki çalışanlardan oluşan bir veritabanımız var.
‫Hadi.
‫Sanırım bu bizim çalışan veri tabanımız olacak.
‫Bu arada, yapıcıyı oluştururken buradaki oranı kaçırdığımı fark ettim.
‫Dolayısıyla, bu kurucu şimdi oranı da kullanacak ve oranı buraya atayacak ve şimdi veritabanından verilerimizi
‫kullanabiliriz.
‫Yani unvanı, ismi, yaşı, süper yaşlı bayanın 95 yaşında olduğunu öğrendiğimiz bir veri
‫tabanımız var.
‫Ve sonra onun oranı var.
‫Yani 200'lük bir oranı var.
‫Bir de müdürümüz var, Joe, 35 yaşında, oranı 25 ve benzeri.
‫Şimdi yapacağım şey, bu sözlüğü burada kullanmayacağım.
‫Çalışanlar dizini adını vereceğim ayrı bir sözlük oluşturacağım.
‫Ve bu çalışan dizini temel olarak çalışan dizesinin bir anahtar değer çiftine sahip olacaktır.
‫Böylece belirli bir dize için tüm çalışan nesnesini depolayacaktır.
‫Buna çalışanlar dizini adını vereceğim ve kullanacağımız dize de çalışanların
‫rolü olacak.
‫Tamam.
‫Şimdi burada, çalışanlar veritabanımdaki her bir çalışanın üzerinden geçecek olan her bir döngü için bunu kullanacağım.
‫İşte bu benim çalışan veritabanım.
‫Tabiri caizse numara yapıyorum.
‫Değil mi?
‫Bu çalışan durumu veritabanının her bir öğesini inceleyecek
‫ve pozisyonda veya rolün anahtarında, çalışanın kendisinde çalışanlar dizinime ekleyecektir.
‫Yani burada her bir rol için yalnızca bir çalışanımız olduğunu varsayıyoruz, aksi takdirde bu tüm sistemi
‫mahveder.
‫Bu, sahte bir veritabanından gelen verilerle nasıl bir sözlük oluşturabileceğimizin bir örneğidir;
‫temelde burada tanımladığımız çalışanların bir dizisi olacaktır.
‫Peki şimdi verileri bir sözlükten almak istersek ne olur?
‫Yani bir sözlükten veri almak istiyoruz ve diyelim ki CEO olan çalışanın verilerini almak
‫istiyoruz.
‫Yani CEO'nun pozisyonu bu.
‫Sonra çalışanlara gidebiliriz, buna Apple diyeceğim ve çalışanlar dizininden alacağız ve
‫burada sadece diyeceğiz ki, tamam, CEO'ya sahip olmak istiyorum, bu yüzden kişiyi ve belki de
‫unvanı CEO olan kişinin aslında tüm nesnesini bilmek istiyorum.
‫Temel olarak sadece sözlük çalışanım için anahtarın CEO olacağı yeri söyleyerek, orada bir dizine bağlı kalın.
‫CEO'nun kim olduğunu bilmek ve tüm çalışanı bir nesnede saklamak istiyorum.
‫Şimdi devam edebilir ve bu çalışanın ayrıntılarını konsol sağ satır deyimini kullanarak şu şekilde görüntüleyebilirim.
‫Bu yüzden burada çalışan adının geniş bir ad olacağını, ardından rolün ve maaşın olacağını söylüyorum.
‫Böylece bu görüntülenecektir.
‫Tamam.
‫Yani temel olarak buradaki orana ve bu hesaplamaya göre maaşı alacağız.
‫Rolü doğrudan alacak ve adı doğrudan çalışan nesnesinin kendisinden alacaktır.
‫Yani bu Apple nesnesinden.
‫Şimdi bunu hızlıca çalıştıralım ve tam zamanlı çalıştığını ve 384.000 maaşı
‫olduğunu düşünürsek kraliçenin ne kazanacağını görelim.
‫Adı Gwen, CEO olarak görev yapıyor.
‫Yani bu kodu çalıştırmak işe yarıyor.
‫Gördüğünüz gibi, burada bir sorun yok.
‫Ancak sorun yanlış bir değer giriyor olmamız olabilir.
‫Diyelim ki CEO yerine CTO'yu, yani teknik sorumluyu, yani Baş Teknik Sorumluyu arıyorum ve
‫bunu çalıştırırsam uygulamamın çöktüğünü görüyorsunuz.
‫Yani CTO'nun sözlükte bulunmadığını, dolayısıyla anahtarın hiç verilmediğini söylüyor.
‫Bunu düzeltmek için temel olarak anahtarın var olup olmadığını kontrol edebiliriz.
‫Bu yüzden burada kontrol etmenin çok iyi bir yolu olacaktır.
‫Bu, SEO adında bir anahtar veya SEO değerine sahip anahtar adında bir dize oluşturmak olacaktır.
‫Sonra da çalışanlar rehberini kontrol ediyoruz.
‫O anahtar için.
‫İşte burada gördüğünüz anahtar, buradaki favori veya en sevilen seçeneklerden biridir.
‫Yani anahtar içeriyor.
‫Ve sonra burada kontrol etmek istediğimiz dizeyi anahtar olarak geçebiliriz.
‫Peki CEO adı verilen anahtarı içeriyor mu?
‫Eğer öyleyse, buradaki kodu çalıştırın.
‫Olmazsa da çalıştırmayın.
‫Ya da elbette bu anahtarın mevcut olmadığını da söyleyebilirsiniz.
‫Şimdi bir anahtar girmenize izin verecek ve ardından uygulamanızın kontrol edeceği küçük bir uygulama oluşturabilirsiniz.
‫Tamam, bu var mı yok mu?
‫Ve bu arada, burada bu anahtar ile değiştirilmelidir.
‫Artık sabit kodlu olmayacak.
‫Tabiri caizse, başka bir noktada kodlanmıştır.
‫Ancak bu, kullanıcı girdisinden aldığımız bir şey olabilir veya kullanıcı bunu bir kullanıcı arayüzünden seçebilir ya da
‫bunun gibi bir şey olabilir ve ardından uygulama verileri alır ve bunu yalnızca gerçek bir kullanıcı arayüzündeki bir konsol
‫uygulaması yerine görüntüler.
‫Ve daha sonra UI'ları nasıl kullanacağınızı veya WPF kullanarak gözlerinizi nasıl oluşturacağınızı göreceksiniz.
‫Bu da sorunu aşmanın bir yoludur.
‫Başka bir yol da try get value denilen bir şey kullanmak olabilir.
‫Şimdi hızlıca biraz kod ekleyeyim ve üzerinden geçeyim.
‫Diyelim ki result adını verdiğim boş bir çalışanımız var ve boş çünkü onu null olarak ayarladım
‫ve ardından çalışanlar dizinini kontrol ediyorum.
‫Eğer intern adında bir değer varsa ve ben bu try get value yöntemini kullanıyorum.
‫Dolayısıyla bu try and get value yöntemi bir boolean döndürür
‫ki bu harika bir şeydir çünkü bir IFF deyiminin koşulda olmasını istediği şey budur ve sonucu yazdırır ve değeri result içine koyar.
‫Yani bu sonuç aslında bir çalışan olacaktır.
‫Bu yüzden değer kazanmaya çalışın.
‫Buradan geçirdiğimiz değeri almaya çalışacağız.
‫Ve eğer çalıştıysa, birim true değerini döndürür.
‫Böylece bu ifade yürütülecek ve aynı zamanda sonucu bu değişkene koyan şeyi alacak, böylece çıkış
‫bu sonuç değişkenine konulacaktır.
‫Böylece çalışanlar dizinimizden aldığımız değer sonuçta saklanacaktır.
‫İşte bu ifade de bunu söylüyor.
‫Ve eğer gerçekten işe yararsa ve stajyer varsa, o zaman bu kod çalıştırılacak ve aksi takdirde bu kod çalıştırılacaktır.
‫Yani bu anahtar mevcut değildir.
‫Bu da aynı sorunu aşmanın başka bir yolu olacaktır.
‫Bu yüzden değer elde etmeye çalışmak da işe yarar.
‫Ernest Intern 22 adında bir çalışan var ve yılda 15.000 Avro maaş alıyor ya da burada ne tür bir paradan
‫bahsetmek isterseniz.
‫Tamam.
‫Şimdi biraz daha derine inelim çünkü element at metoduyla bir elementi, yani sözlüğümüzün
‫bir elementini de alabiliriz.
‫Öğrendiğimiz ya da sizin öğrendiğiniz gibi, bir sözlük burada yapıları kullanacaktır.
‫Sözlük, anahtar değer çiftlerinden oluşan bir koleksiyondur ve anahtar değer çifti gibi tanımlanan
‫bir yapıdır ve buradaki gibi görünecektir.
‫Şimdi bu yıla bakalım.
‫Yani anahtarımız ve değerimiz var.
‫Yani bu anahtar değer çiftidir.
‫Yani bir sözlüğün içerdiği şey budur.
‫Şimdi şuna bir göz atalım ve aslında tam buraya koymama izin verin.
‫Yani bu for döngüsünün yapacağı şey, bu eleman ekleme yöntemini kullanmak olacaktır.
‫Ancak, bunu kullanmak için bağlantıyı uygulamamız gerekecektir.
‫Şimdilik, link'in koleksiyonlarla çok verimli bir şekilde çalışmamızı sağlayan güçlü bir araç olduğunu kabul
‫edin ve daha sonra link'i özel olarak inceleyeceğimiz ekstra bir bölümümüz olacak, ancak
‫şimdilik sadece bunu kabul edelim.
‫Yani ilerleyen bölümlere geldiğinizde bu konuda daha fazla şey öğreneceksiniz ve o zaman bu daha anlamlı hale gelecek.
‫Yani bizim durumumuzda.
‫Ve bu özel örnekte, anahtar ve değerin anahtar olduğu anahtar değer çiftimiz vardır.
‫Sözlüğümüzün anahtarlarının türüdür.
‫Aynı şey sözlüğümüzün değeri olan RT değeri için de geçerlidir.
‫Şimdi bizim durumumuza bakarsak, bu string ve employee'dır.
‫Burada oluşturduğumuz sözlüğümüz için, string ve employee.
‫Ancak bu dize anahtarının arkasında dahili olarak bir tamsayı değeri, yani tabiri caizse bir sayı da vardır.
‫Diyelim ki sıfırıncı pozisyonda birinci pozisyonda CEO, ikinci pozisyonda müdür, üçüncü pozisyonda
‫hava personeli, sekreter ve diğerleri olacak.
‫Her ne kadar hepsi pozisyonlarında yani rollerinin kilit noktasında olacak olsalar da, içsel olarak aynı
‫zamanda bir numarada olacaklar.
‫Dolayısıyla anahtar da dahili bir sayı olacaktır.
‫İşte bu element için kullanabileceğimiz şey tam olarak budur.
‫Yani bu öğe ve üzerine geldiğinizde bir dizide belirtilen indeksteki öğeyi döndürür.
‫Yani sözlük bir dizidir.
‫Yani temel olarak çalışanımızın pozisyonunu sıfır, çalışanımızı pozisyon bir, genlik pozisyonumuzu iki ve benzeri şekilde
‫döndürecektir.
‫Ancak, bu bir anahtar değer çifti döndürecektir ve burada oluşturacağımız anahtar değer çifti, string ve employee
‫türünde olacaktır.
‫Böylece şimdi anahtarı görüntüleyebilir ve ardından değer konumundaki anahtar değer çiftimizde çalışanımızın değerini
‫alabiliriz.
‫Öğemizden aldığımız için bu biraz daha karmaşıktır, ancak temel olarak sözlüğünüzün içindeki
‫bir öğeye erişmenin başka bir yoludur, anahtarı bir dize olarak değil, anahtarı bir tamsayı olarak kullanır.
‫Ve bu tüm farklı anahtar türleri için geçerlidir.
‫Dolayısıyla, tuş için hangi türü kullanırsanız kullanın, her zaman ona atanmış bir numara da vardır.
‫Dolayısıyla, bu nesne türü dışında olsa veya double ya da başka bir türde olsa bile, her
‫zaman bu öğeyi I'de kullanmamıza izin veren bir tamsayı atanır.
‫Şimdi bunun üzerinden geçelim ve bunun temelde tüm çalışanları görüntülememize izin vereceğini göreceksiniz.
‫Böylece listemizdeki tüm çalışanları gözden geçirir.
‫Sanırım buraya kadar geliyor.
‫Yani bize orada bulunan tüm çalışanlarımızı gösteriyor.
‫Ve hatta biraz daha yukarıda başlıyor.
‫Yani temel olarak bu for döngüsünden elde ettiğimiz liste budur.
‫Böylece, sözlük listesinin tamamını gözden geçirmek için bir for döngüsü kullanabilirsiniz.
‫Elbette her döngü için A'yı da kullanabilirsiniz, ancak sekizinci AI öğesini kullanarak öğelere de
‫erişebilir ve ardından bunu bir MP nesnesinde saklayabilirsiniz, çünkü değer aslında employee türünün dışında olacaktır, çünkü burada
‫tanımladığımız şey budur.
‫Şimdi, anahtara bakarsanız, tekrar çalıştıralım.
‫Burada görebilirsiniz, ki seo ki manager.
‫Ki h. r.
‫Ki sekreteri.
‫Şimdi, eğer istersek gözü de basabiliriz.
‫İşte burada.
‫Aynen öyle, Trent.
‫Aslında, buraya basalım.
‫Öyleyim ve sonra bu şekilde ikinci giriş olacağım.
‫Ve sonra ben'i basarız.
‫Tamam.
‫Böylece belirli bir konuma hangi tamsayı değerinin atandığını doğrudan görebilirsiniz.
‫Yani CEO sıfır pozisyonunda.
‫Yönetici birinci pozisyondadır, İK personeli ikinci pozisyondadır ve bu böyle devam eder.
‫Tamam.
‫Bu video için bu kadar.
‫En azından bu noktada sözlüklerin üzerinden geçmek için yeterince uzun bir video olduğunu düşünüyorum.
‫Bir sonraki videoda, mevcut bir sözlüğü nasıl güncelleyebileceğimize bakacağız, yani bir sözlüğün değerini
‫nasıl güncelleyebileceğimizi ve ayrıca bir sözlükten nasıl veri kaldırabileceğimizi göreceğiz.
‫Bir sonraki videoda görüşmek üzere.