‫Bu derste hash tablolarını ele alacağız ve daha sonra sözlüklere de bakacağız.
‫Dolayısıyla hash tabloları ve sözlükler C sharp'taki en kullanışlı koleksiyonlardan bazılarıdır.
‫Bu yüzden bunları nasıl tanımlayacağımızı, nasıl kullanacağımızı ve hangi senaryoda bunlardan yararlanmamız gerektiğini
‫göreceğiz.
‫Hash ve tablo kavramlarını anlamak.
‫İlk olarak, gerçek bir sözlük düşünün.
‫Bu nedenle, Almanca'daki her kelimenin İngilizce'de yalnızca bir kelimeye karşılık geldiği bir Almanca ve İngilizce sözlüğümüz olduğunu
‫varsayalım, çünkü bu buradaki sınırlamayı sınırlamak olacaktır.
‫Dolayısıyla, Almanca'da temel olarak İngilizce'de araba anlamına gelen auto kelimesini çevirmeye çalıştığımızda,
‫örneğin arayabileceğimiz bir anahtar kelime olarak bir kelime kullanıyoruz ve sonuç olarak bir çeviri elde ediyoruz.
‫Yani her zaman bu bire bir ilişki vardır.
‫Yani auto'muz var ve bu da car'a dönüşüyor ve hash tablolarını kullanarak da tam olarak bunu başarabiliriz.
‫Ve bunu burada çok özel bir örnekte kullanacağız.
‫Diyelim ki her öğrencinin bir kimliği ve isim, yaş, notlar ve resim gibi diğer birçok veriye
‫sahip olduğu bir öğrenci kayıt sistemimiz var.
‫Böyle bir sistemin işleyebilmesi için her bir öğrenciye özel bir kimliğe ihtiyacımız olacak.
‫Bu yüzden benzersiz olmalı.
‫Bu verileri bir karma tablo veya sözlük kullanarak depolayacak olsaydık, öğrenci kimliği anahtar
‫olurdu ve öğrenci verileri diğer tüm öğrenci bilgilerini içeren bir nesne olurdu ve bu da değer olurdu.
‫Yani her zaman bu anahtar değer çiftine sahibiz.
‫Tabiri caizse gerçek veriyi bu şekilde bulabilirsiniz ve arkasındaki değer de budur.
‫Yani bir dolap gibi görebilirsiniz.
‫Yani bu, dolabın kimliği veya dolabın konumudur.
‫Farklı türde veriler olabilir.
‫Bir ID olması gerekmez ve bu değer olacaktır.
‫Yani sözlük, bir hash tablosunda aynı türde olmak zorundadır.
‫Farklı türlerde olabilirler.
‫Örneğin, bu bir tamsayı olabilir ve bu bir nesne olabilir.
‫Bu yüzden ilk olarak hash tablolarına bakacağız.
‫Bu nedenle yeni bir sınıf oluşturacağız ya da aslında ben bunun için yeni bir sınıf hazırladım.
‫Şuraya koyalım.
‫Ve birkaç özelliği var.
‫Bir ID özelliği, bir ad özelliği ve GPA'ya sahiptir.
‫Ve sonra sadece değer atayan çok basit bir kurucumuz var.
‫Dolayısıyla, öğrenci nesnesini oluştururken ona hangi kimliği verirsek verelim, öğrenci nesnesinin kimliği
‫o olacaktır.
‫Yani burada çok süslü bir şey yok.
‫Sınıf bölümünde işlediğimiz gibi sadece normal bir sınıf kullanıyoruz.
‫Şimdi, elbette, devam edip bu sınıfı ayrı bir dosyada oluşturabiliriz, böylece devam
‫edip çözüm gezginimizi açabiliriz.
‫Devam edin ve burada yeni bir dosya oluşturun.
‫Bu yüzden yeni bir öğe veya sınıf ekleyin ve buna öğrenci adını verin.
‫Ancak bu örnek için basit tutacağım ve tek bir dosyaya koyacağım.
‫Bildiğiniz gibi, ayrı bir dosyaya koymak en iyi uygulamadır, böylece işleri karıştırmazsınız ve dosyaları,
‫sınıfları ve tüm bunları daha kolay bulabilirsiniz.
‫Tamam, artık öğrenci sınıfımız olduğuna göre devam edebilir ve bir hash tablosu oluşturabiliriz.
‫Programımızın içinde, main metodunda, yeni bir hash tablosu tanımlayacağım
‫ve bu hash tablosu aşağıdaki gibi olacak.
‫Ve bu tabloyu yeni hash tablosu olarak adlandıracağım.
‫Karma tablo sınıfı sistem koleksiyonlarının içindedir, bu nedenle sistem koleksiyonlarını kullanarak bu ad alanını buraya
‫eklememiz gerekir.
‫Yani hash tablosu ve hash tabloları ad alanından farklıdır çünkü bu ad alanını
‫projemize eklemeden hash tablosuna girmek istersek burada kimliğimizi karıştırabilir.
‫Ama artık program sınıfımızın içinde olduğuna göre, onu kullanabiliriz.
‫Böylece artık bir veri tablosu olacak olan bu yeni hash tablosuna sahibiz ve istediğimiz verileri buraya koyabiliriz.
‫İşte böyle bir hash tablosu oluşturabilir, burada yaptığımız gibi boş bir hash tablosu nesnesi ile nasıl
‫başlatabilirsiniz.
‫Şimdi yapabileceğimiz şey, bu hash tablosuna değerler atayabiliriz ve hatta kodumuzu biraz daha okunabilir hale
‫getirmek için buna öğrenci tablosu bile diyebiliriz.
‫Şimdi tablomuzda olmasını istediğimiz bir grup öğrenci oluşturmamız gerekiyor.
‫Bu yüzden onları da buraya eklememe izin verin.
‫Bunlara stud one stat, 2 ila 3, step four diyeceğim ve hepsi yeni öğrenci nesneleri olacak.
‫Yani burada bu, kimliği olan öğrenci olacak, biri Maria olacak.
‫Not ortalaması 98.
‫Sonra bir ID'ye sahip olacak JSON'umuz var.
‫Buradaki kimlik, tabiri caizse benzersiz tanımlayıcı ve ardından öğrencilerin sahip olduğu not ortalamasıdır.
‫Tamam.
‫Şimdi tüm bu öğrencilere sahibiz ve öğrenci kimliğini kullanarak onları öğrenci tablomuza atayabiliriz.
‫Ve iyi uygulama, devam etmek ve öğrenciler tablosunda kalmak olacaktır nokta ekle ve burada öğrenci kimliğini kullanıyoruz,
‫bu yüzden buradaki özelliği anahtar olarak kullanıyoruz.
‫Burada hash tablosunun nesne türünde bir anahtara sahip olmamıza izin verdiğini görebilirsiniz, böylece anahtar
‫olarak herhangi bir nesne türü olabilir ve değer olarak isteğe bağlı veya bilinebilir bir nesne olabilir.
‫Böylece bir değer atayabiliriz veya null olabilir.
‫Tamam, ama bir değer atayacağız ve bu da öğrencinin kendisi olacak.
‫Şimdi birinci öğrencimizi öğrenciler tablomuza ekledik ve aynı şeyi diğer öğrenciler için de yapabiliriz ve her
‫biri için kimliklerini kullanacağız.
‫O halde hepsi için öğrenci tablosunu kullanalım.
‫Tamam.
‫Artık hash tablomuz bu, ancak girdileri nasıl getirebiliriz?
‫Peki hash tablomuzdan girdileri nasıl alabiliriz?
‫Peki, bunun için farklı yollara bakalım.
‫Yapabileceğimiz ilk şey, burada bir öğrenci nesnesi oluşturmaktır.
‫Böylece öğrenci ve bu nesne depolanmış öğrenci olarak adlandırılacaktır.
‫Bu yüzden tablomdan öğrenci değerini alacağım.
‫Yani bu durumda, öğrenci masası.
‫Öğrenciler bu şekilde masaya oturur.
‫Ve burada bir diziye nasıl eriştiğime benzer.
‫X bir dizide nasıl bir değer ise, ona bir ID ile erişebilirim.
‫Örneğin burada, diyelim ki ID 1'dekini bu şekilde almak istiyorum.
‫Buradaki sorun, daha önce gördüğümüz gibi, bu hash tablosunun nesne türünde değerlere sahip olabilmesidir.
‫Burada, devam edip add yöntemini çağırırsak, bir anahtar atayabileceğimizi görebilirsiniz, ancak değer nesne
‫türünde olacaktır.
‫Bu da buradaki nesnenin nesne türünde olacağı anlamına gelir.
‫Ancak öğrenciye sadece bir nesne türü atayamayız.
‫Öğrenci tipi dışında olmalıdır çünkü bu saklanan öğrenci aslında öğrenci tipindedir.
‫Bu yüzden onu burada bir öğrenciye dönüştürdüğümüzden emin olmalıyız ve sonra bu çalışacaktır.
‫Tamam, bu nesneyi bir öğrenciye dönüştürüyoruz çünkü öğrenci tablosunun içinde birinci konumda olduğunu
‫biliyoruz.
‫Dolayısıyla, ID birde, değer aslında öğrenci türünde olacaktır.
‫Yani burada birinci kimlikteki öğrenciyi alabilirsiniz, ikinci kimlikteki öğrenciyi alabilirsiniz vb.
‫Ancak bu sadece işe yarıyor çünkü aslında bu sayıları kullandığımızı biliyoruz.
‫Yani eğer almak istiyorsanız, aksi takdirde kimlikle üçüncü bir tane kullanabilirsiniz.
‫Şimdi bu size öğrenci kimliğinin arkasındaki değeri verecektir.
‫Yani bu size temel olarak burada bu değeri veya burada bu öğrenciyi verecektir.
‫Ve tam olarak bu.
‫Yani buradaki, çünkü bu kimlikte depoladığımız şey bu.
‫Şimdi devam edebilir ve kızarmış hello world yerine öğrenci kimliğini, öğrencinin adını ve
‫not ortalamasını yazdığımız yararlı bir şey yazacağımız böyle bir şey yapabiliriz.
‫Bu yüzden depolanan öğrenci bir nokta kimliğini kullanacağız.
‫Kimliğini, adını ve not ortalamasını öğrendik.
‫Ve bu durumda, onun not ortalaması ve benzerleri, çünkü ID 1'de birinci pozisyonda Maria var.
‫Tamam, şimdi bunu çalıştıralım ve öğrenci kimliğinin bir, adının Maria ve not ortalamasının 98 olduğunu görebilirsiniz.
‫Burada bir hash tablosunu nasıl oluşturabileceğimizi gördük.
‫Verileri hash tablosunda bu şekilde saklayabiliriz.
‫Aslında burası verileri bir hash tablosunda sakladığımız yerdir.
‫Ve sonra bir hash tablosundan verileri bu şekilde alabiliriz.
‫Şimdi hash tablomuzun içindeki tüm verileri yazdırmak istediğimizi ve elimizde belirli bir
‫anahtar olmadığını varsayalım.
‫Bunu çözmek için hash tablomuzdan tüm anahtarları alarak bunu basitçe yapabiliriz.
‫İlk olarak, sözlük girişi adı verilen bir yapıdan bahsetmeliyiz.
‫Hash tablomuza her yeni giriş eklediğimizde.
‫Böylece anahtar değer çiftimiz, bizim için yeni bir sözlük girdisi nesnesi oluşturulacak ve hash tablomuza eklenecektir,
‫bu da hash tablosunun temelde bir sözlük girdileri koleksiyonu olduğu anlamına gelir.
‫Böylece, sözlük girdisinin geçici bir nesnesini kullanarak, bir for each döngüsü kullanarak hash tablomuzdan geçebiliriz.
‫Şimdi bu özel örneğe bakalım ve burada bir for each döngüsü kullanacağım.
‫Ve bu her döngü tipi için sözlük girişi olacaktır.
‫Bahsettiğim yapı buydu.
‫Burada yapısal sözlük girişini görebilirsiniz.
‫Peki kullanacağım öğe adı nedir?
‫Girişi kullanacağım.
‫Elbette, girişlerin öğrenci türünde olacağını bildiğiniz için buna öğrenci veya başka bir
‫şey diyebilirsiniz, ancak diyelim ki bunu bilmiyorsunuz ve buna giriş de diyebilirsiniz.
‫Ve sonra bunu çalıştırmak istediğimiz veya değerlerini almak istediğimiz koleksiyon nedir ve bu bizim öğrenciler
‫tablomuz olacaktır.
‫Yani bu geri alındı.
‫Kimliği bilinen bireysel bir öğe.
‫Ve burada.
‫Bir hash tablosundan tüm değerleri alın.
‫Tamam.
‫Yani hash tablomuzun içindeki bir girdi, az önce söylediğim gibi sözlük girdisi türündedir.
‫Bu sayede şimdi bunu gözden geçirebiliyoruz.
‫Tablo, öğrenciler tablosu ve temel olarak değerleri görüntüler.
‫Burada, giriş değeri bir nesne döndüreceği için, burada nesne yazdığını görebilirsiniz.
‫Ancak öğrenci bilgilerini almak için istediğimiz şey bir öğrenci nesnesi olacaktır.
‫Yapmamız gereken şey, aşağıdakileri yapmak olacaktır.
‫Bu yüzden giriş değerimiz olacak geçici bir değer oluşturuyoruz.
‫Şimdi burada yaşadığımız sorunun aynısını yaşıyoruz, bunu bir öğrenciye dönüştürmemiz gerekiyor çünkü bu sadece bir nesne,
‫değil mi?
‫Ancak öğrenci özelliklerine erişebilmemiz için öğrenci türünde olmasını istiyoruz.
‫Aksi halde giriş değeri nokta olduğu için, burada kimliği yok, kimliğine erişemiyorum, adına erişemiyorum, orada
‫var olmasına rağmen tüm bu şeylere erişemiyorum.
‫Ancak ID'miz buna izin vermiyor çünkü önce değeri doğru türe dönüştürdüğümüzden veya döküm yaptığımızdan emin olmamız
‫gerekiyor, bu da bizim öğrenci türümüz olacak.
‫Şimdi onu döküm yapıyoruz, geçici olarak depoluyoruz ve şimdi devam edip örneğin konsolumuza tek tek değerleri
‫yazabilir ya da programımızı istediğimiz şekilde kullanabiliriz.
‫Dolayısıyla burada şablon kimliğini kullanarak öğrenci kimliğini kullanabiliriz çünkü temp artık öğrenci türündedir
‫ve öğrencinin kimlik adı GPA'dır ve şimdi tüm öğrencilerimizin tüm listesini yinelemek için bunların hepsine erişebiliriz.
‫Hadi bunu hızlıca yapalım.
‫Kodumuzu çalıştıralım ve bu for each döngüsünün bizim için ne yaptığını görelim, böylece içinden geçtiğini görebilirsiniz.
‫Diyor ki.
‫Dördüncü öğrenci Steve.
‫ÖĞRENCİ üç Sklera.
‫İki numaralı öğrenci Jason ve bir numaralı öğrenci Maria.
‫Gördüğünüz gibi arkadan kuyuya doğru gidiyor, en son girişten başlıyor ve ilk girişe kadar gidiyor.
‫Şimdi, bu noktada, zaten bir öğrenciye dönüştürüyor olsak bile, öğrenci olup olmadığını
‫bilmiyoruz.
‫Bu size bir hash tablosunun aslında sadece bir sözlük girdileri koleksiyonu olduğunu göstermek içindir.
‫Şimdi bunu her döngü için nasıl basitleştirebileceğimize bakalım.
‫Aslında değişken türünün öğrenci olacağı her bir durum için diyerek bunu basitleştirebiliriz.
‫Ürün adı, öğrenci de diyebilirsiniz.
‫Ben buna sadece değer diyeceğim.
‫Yani sorun yok.
‫Ve üzerinden geçmek istediğim koleksiyon tablo olacak, öğrenciler ise nokta değerleri tabloları olacak.
‫Yani hash tablosu değerlerinden oluşan bir yapay zeka koleksiyonu var.
‫Böylece hash tablosundaki değerleri içeren bir AI koleksiyonu alır.
‫Dolayısıyla bu, değerlerin üzerinden doğrudan geçmek zorunda kalmadan geçmemizi sağlar.
‫Temel olarak burada yaptığımız şeyi, dönüştürdüğümüz veya bir öğrenci nesnesine dönüştürdüğümüz yeri yapın.
‫Şimdi devam edebiliriz.
‫Burada yaptığımızın aynısını yapın.
‫Ancak şimdi, elbette, değer kimliği ve benzeri olacak çünkü giriş değil ve geçici değil,
‫ama aslında değer olacak çünkü her grup için bu budur.
‫sahip olduğumuz tüm değerlerin üzerinden geçtiği her bir yineleme için bize veriyor.
‫Ve değer, söz konusu yineleme için şu anda baktığımız bireysel değer olacaktır.
‫Yani ilk yinelemede şöyle olacak.
‫Steve.
‫Sonra Clara, sonra Jason, sonra Maria olacak.
‫Dolayısıyla, buradaki satırdan ya da for each döngüsünden kurtulur ve tekrar çalıştırırsak, aynı sonuçları elde
‫ettiğimizi göreceğiz.
‫Yani Steve, Clara, Jason ve Maria.
‫Tamam.
‫Bu hash tablolarına hızlı bir girişti ve bir sonraki videoda, hash tablolarını biraz
‫daha iyi anlamak için kodunuzu biraz genişleteceğiniz küçük bir meydan okumam olacak.
‫Sonra da sözlüklere bakacağız.