Zaman içerisinde oldukça fazla gelişim gösteren .NET Framework irili ufaklı birçok problem için hazır altyapılar sağlayarak gerek zaman kazandırması gerekse de test edilmiş kodların kullanılması sonucunda hata oranının azalması sonucunda kolay bir şekilde uygulama geliştirilmesini sağlamaktadır. Şu günlerde bile hızla genişleyen bu altyapı habersiz birçok yeni özellikler kazanmakta biz geliştiriciler de elimizden geldiği kadarı ile bunları takip ederek belki yazdığımız kodları güncelleriz ( çalışıyorsa dokunmamak mı lazım yoksa :)) ) ya da bundan sonraki yazılan kodlarda bu yenilikleri kullanmaya özen gösteririrz. Ama sanki ipin ucu kaçıyor gibi. .NET 3.5 ile gelen yenilikleri incelemek için biraz zaman ayırdığımda ilk karşıma çıkan yeniliklerden birisi de (System.Collections.Generic isim alanı içerisinde) HashSet<T> isimli generic bir kolleksiyonun List<T>'e alternatif olarak framework'ün içerisinde yer alması idi.
Tabi isminde geçen Hash kelimesinden de anlayabileceğimiz gibi bu kolleksiyon içinde tutulan verilere erişme yöntemi oldukça hızlı. Ama msdn den bu sınıfın detay bilgileri incelendiğinde List<T>'e göre oldukça değişik bir kullanımı olduğunu görüyoruz. Ilk göze çarpan önemli bir özellik HashSet<T>'in aynı veriyi ikinci defa kolleksiyon içerisine koymaması. Örneğin ;
şeklinde bir kod ile veriler eklenmeye çalışıldığında 7 değeri ikinci kez eklenmek istendiğinde aslında bu işlem yapılmayacaktır. Add metodunun geri dönüş değerine dikkat edersek bool türünden bir değer döndüğünü bundan da eklenmek işleminin başarılı olup olmadığını rahatlıkla anlayabiliyoruz. Eğer eklemek istediğimiz verilerin birbirinden farklı olduğuna eminsek bu kolleksiyonu kullanabiliriz. Peki bu kolleksiyonun bize faydası ne olacak ? Tabi ki verilere erişme hızımızda oldukça çok hız kazandıracaktır. Silme (Remove) ve Arama (Contains) işlemlerinde List<T>O(n) karmaşıklığı gösterirken HashSet<T> O(1) karmaşıklığı göstereceğinden hız oldukça artacaktır.
Remember Me