C# – Hashtable Sınıfı

28 Aralık 1992 yılında Erzurum’da doğdum. İlköğretim ve ortaöğretimimi 2000-2012 yıllarında Kocaeli'de; yükseköğretimimi de 2013-2018 yıllarında Sakarya üniversitesi bilgisayar mühendisliği bölümünde tamamladım. Şu an Intertech'te yazılım uzmanı olarak çalışmaktayım.

Bir yanıt yazın

Comment as a guest.

  1. Emeğiniz için çok teşekkür ederim. Hala destek veriyor musunuz bilmiyorum ama şansımı denemek isterim. Çok kısa bir sürede teslim etmem gereken bir ödevim var ve kodum hatalı çalışıyor. En basit haliyle sorun şu, Hashtable avl’den daha yavaş. Avl neredeyse 10 kat hızlı. Sorunu çözmemde bana yardımcı olabilir misiniz? yardımcı olurum derseniz sizinle yazdığım kodu paylaşmak isterim. Her halukarda teşekkürler.

  2. Hashtable Sınıfını anlamamda çok yardımcı oldunuz, teşekkürler.

  3. İyi günler. Konuyu çok kısa ve öz bir şekilde anlattığınız için teşekkür ederim. İzninizle bir soru sormak istiyorum. Tekli isminde bir hashtable kullanıyorum ve hashtable’daki value değerleri limit değerine eşit olan değerleri ve anahtarları silmek istiyorum. Bunun için aşağıdaki gibi bir kod yazdım fakat şu şekilde bir hata alıyorum: “Koleksiyon değiştirildi; sabit listesi işlemi yürütülemeyebilir.” Bu problemi nasıl çözebilirim yardımcı olursanız sevinirim.
    Hashtable Tekli =new Hashtable();
    int limit = 1;
    foreach (object Anahtar in (Tekli.Keys))
    {
    if(Convert.ToInt32(Tekli[Anahtar]) == limit)
    {
    Tekli.Remove(Anahtar);
    }
    else
    {
    MessageBox.Show(Convert.ToString(Anahtar + “-” + Tekli[Anahtar]));
    }
    }

    1. Merhaba,
      foreach ile Tekli koleksiyonunun elemanlarına erişirken, aynı zamanda koleksiyondaki elemanları silmeye çalıştığınız için program hata vermektedir.

      Çözüm

      Hashtable Tekli = new Hashtable();
      Tekli.Add(5, 1);
      Tekli.Add(20, 10);
      Tekli.Add(4, 1);
      Tekli.Add(10, 2);
      Tekli.Add(18, 4);
      Tekli.Add(17, 1);
      
      int limit = 1;
      Hashtable temp = (Hashtable)Tekli.Clone();
      foreach (object anahtar in temp.Keys)
      {
          if (Convert.ToInt32(temp[anahtar]) == limit)
          {
              Tekli.Remove(anahtar);
          }
          else
          {
              Console.WriteLine(anahtar + "-" + temp[anahtar]);
          }
      }
               
      

      Tekli koleksiyonunun kopyasını alıp, foreach ile kopya koleksiyon üzerinde dolaşırken, silinmesi gereken elemanları Tekli koleksiyonu üzerinden silerek istediğiniz sonucu elde edebilirsiniz.

Sliding Sidebar