İlginizi Çekebilir
featured
  1. Ana Sayfa
  2. Java
  3. Java Hashtable Nedir?

Java Hashtable Nedir?

Collection Framework yapısının derinliklerine inerek Map yapısının ilk konusunu olan Hashtable kavramını ele alarak yeni bir rehber içerik oluşturmaya çalışacağım.

Oluşturmaya çalışacağım bu rehber içerik içerisinde sizleri Java Hashtable Nedir, Özellikleri, Metotları ve Kullanım yapısı gibi bölümlerde çeşitli teorik ve uygulamalı bilgiler bekliyor olacak. Eğer “Collections” yapıları konusunda bir fikriniz yoksa konunun ilerleyen kısımlarında zorluklar çekebilirsiniz. Bu durumun önüne geçebilmek için daha önce paylamış olduğum “Java Collections Nedir” isimli rehber içeriğime emrecelen.com.tr/java-collections-nedir/ bu vermiş olduğum adresi takip ederek ulaşabilirsiniz. Böylelikle Hashtable yapısını daha rahat bir şekilde anlamlandırabilir ve öğrenebiliriz.🕵🏻🎓👨🏻‍🎓👩🏻‍🎓

Java Hashtable Nedir?

Java Hashtable, yapısının sahip olduğu özellikler yüzünden anahtar ve değeri şeklinde veri girişlerini kabul eder. Her anahtar yapısı benzersiz bir değeri olan bir nesne olarak kabul edilir. Sahip olduğu anahtara hashing tekniğini uygular ve elde edilen hashcode yapısını anahtarın indeksi olarak kullanır. Bu yüzden içerisine eklenecek anahtarların ve değerlerin null bir değer olmaması gerekir.

Hashtable kavramını bir sözlük yapısı gibi düşünebiliriz. İçerisinde bir kelime ve bu kelimeye karşılık gelen bir tanım yer alır. Tabii, tüm bu olayları kendisine özgü bir algoritma üzerinde gerçekleştirir. Bu olayı daha rahat aklınızda canlandırabilmek için aşağıdaki görseli inceleyebilirsiniz.

Java Hashtable Nedir
Java Hashtable Yapısı

Java Hashtable Özellikleri

Teorik olarak tanımlamasını yapmış olduğumuz Hashtable yapısına ait özellikleri sizler için aşağıda maddeler halinde hazırladım. İsterseniz bu maddelere bir göz atalım ve edindiğimiz teorik bilgi temelini güçlendirelim.💪🏻🎓

  • İçerisinde null veri saklanmasına izin vermez.
  • Yapı içerisinde eklediğimiz verileri kendisine özel “hashing” ismi verilen bir yapı kullanarak verilerin depolanmasını gerçekleştirir.
  • İçerisine ekleyeceğimiz veriler tamamen benzersiz bir yapıda olmak zorundadır.
  • Senkronize bir yapıya sahiptir.

Java Hashtable Kullanımı

Java Hashtable Kullanımı, Collection Framework yapısı gereği birden fazla constructor (kurucu) metot kullanımı ile farklı tanımlamalar oluşturularak kullanılır. Fakat bu kısımda akılımızın fazla karışmaması için temel tanımlama yöntemi üzerinden giderek java hashtable kullanımını göstermeye çalışacağım.

İsterseniz hashtable kullanımı için izlememiz gereken aşamaları maddeler üzerinde aşamalara ayırarak ele alalım.

  1. Tanımlama işlemini gerçekleştirirken mevcut sınıf yapımız ile “hashtable” kavramını tanıştırmak ve kullanabilmek için “Hashtable” kavramını sınıfımız içerisine import ederek ilk adımımızı atalım.
  2. import java.util.Hashtable;

  3. Daha sonra klasik tanımlama işlemimizi gerçekleştirelim. Tabii, bu tanımla esnasında çeşitli constructor metotlarından faydalanabileceğimiz gibi, generic veya non-generic bir tanımlama da gerçekleştirebiliriz.
  4. Yukarıda bahsetmiş olduğum generic ve non-generic tanımlama şekillerini aşağıdaki kod bloğu üzerinde inceleyebilirsiniz.

    ///---> Hashtable Tanımlaması <---\\\
    Hashtable nonTable  = new Hashtable(); ///---> Non Generic Hashtable Tanımlaması <---\\\\
    Hashtable <String,Integer> genericTable = new Hashtable<>(); ///---> Generic Hashtable Tanımlaması <---\\\
    

    Hashtable kullanımı için gerekli aşamaları takip ederek gerçekleştirdiğimiz tanımlama sonucunda bazı metot yapılarını kullanabilir hale geleceğiz. Bu metot kavramlarını ve sahip olduğu özellikleri yeni bir bölüm altında incelemeye başlayalım. 👨🏻‍🏫🔍👀

    Java Hashtable Metotları

    Hashtable tanımlamak için gerekli adımlarımızı takip ettikten sonra bazı özel ve Collection yapısından gelen ekstra metotları kullanabilir hale gelmiş olduk. Bu bahsetmiş olduğum metot yapılarını aşağıdaki maddeler üzerinden inceleyebilirsiniz.

    • Put(Key,Value): Parametre olarak verilen anahtar ile değeri birbiri ile eşler ve yapımızın içerisine ekler.
    • Remove(Key): Parametre olarak aldığı anahtar değeri yapı içerisinde bulunuyorsa o yapıyı siler.
    • Get(Key): Almış olduğu anahtar değeri hashtable üzerinde bulunuyorsa o değeri geriye döndürür. Eğer verilen anahtar ile eşlesen bir öğe yoksa null değerini döndürür.
    • Equals(Value): Parametre olarak almış olduğu verinin hashtable içerisinde bir eşitliğe sahip olup olmadığını kontrol eder.
    • Contains(Value) & ContainsKey(Key) & ContainsValue(Value):Verilen anahtar ve değere göre arama gerçekleştirerek eşleyen bir sonuçta true değerini döndürür.
    • Keys(): Hashtable içerisinde yer alan anahtarları sıralar.
    • KeySet(): Hashtable içerisindeki anahtarları bir küme şeklinde oluşturur.
    • HashCode(): Oluşturmuş olduğumuz yapının hash kodunu verir.
    • Elements(): Hashtable içerisine eklemiş olduğumuz değerleri numaralandırarak geriye döndürür.
    • EntrySet(): Hashtable yapısı içerisindeki gönderimleri bir küme olarak geriye döndürür.

    Collection Framework” içerisinde görmeye alışık olduğumuz “Clear, Clone, isEmpty” gibi diğer metot kavramlarına yer vermedim. Fakat böyle metotlarında Hashtable içerisinde kullanılabilir olduğunu unutmayın.

    Şimdi isterseniz yukarıdaki metotların kod içerisinde kullanım şekillerine bakalım ve buna uygun ekran çıktımızı oluşturalım.

    import java.util.Hashtable;
    
    public class Main {
    
        public static void main(String[] args) {
    
            ///---> Değişken Tanımlaması <---\\\
            String ayrac = new String(new char[15]).replace("\0","-");
    
            ///---> Hashtable Tanımlaması <---\\\
            Hashtable table = new Hashtable();
    
            ///---> Hashtable Metotlarını Kullanmak İçin Bazı Değerler Oluşturalım <---\\\
            table.put(1836025,"Emre");
            table.put(2346021,"Ömer Faruk");
            table.put(6524786,"Ali İhsan");
            table.put(5584290,"Mert");
    
            ///---> Hashtable Metotlarının Kullanışı <---\\\
            System.out.println(ayrac+"\n< Java Hashtable Metotları >\n"+ayrac);
            System.out.println("-> entrySet() Metot Kullanımı: " + table.entrySet());
            System.out.println("-> remove(5584290) Metot Kullanımı: " + table.remove(5584290));
            System.out.println("-> Get(2346021) Metot Kullanımı: " + table.get(2346021));
            System.out.println("-> \"Ali İhsan\".Equals(\"Ali Kefal\") Metot Kullanımı: " + "Ali İhsan".equals("Ali Kefal"));
            System.out.println("-> containsKey(1836025) Metot Kullanımı: "+ table.containsKey(1836025));
            System.out.println("-> keys() Metot Kullanımı: "+ table.keys());
            System.out.println("-> hashCode() Metot Kullanımı: " + table.hashCode());
            System.out.println("-> elements() Metot Kullanımı: " + table.elements()+"\n"+ayrac);
    
        }
    }
    

    Kod Çıktısı:

    Java Hashtable Metot
    Java Hashtable Metotları

    Java Hashtable Örnekleri

    Hashtable yapısını daha iyi anlayabilmemiz için konu içerisinde değinmiş olduğum “sözlük” yapısını ele alarak güzel bir örnek oluşturmak istiyorum.

    Bunun için örnek yapımızda “Türkçeİngilizce” metinlerin yer alacağı ve bu metinlerin kullanıcıya belirli bir sıralama sistemine uygun şekilde sunulup karşılığının bekleneceği bir yapı oluşturmaya çalışacağım. Hazırsanız örneğimiz için uygulayacağım aşamaları maddeler halinde inceleyelim.

    1. Sözlük yapımızı oluşturmak için “Main” sınıfı içerisinde generic bir Hashtable yapısı oluşturarak işlemime başladım.
    2. Daha sonra sözlük uygulaması içerisinde kullanıcıya gösterilecek bazı verilerin girişini gerçekleştirdim.
    3. Sistemimizi bir oyun alt yapısına uygun hale getirebilmek için değişkenlerimi ve scanner sınıf yapımında tanımlamasını gerçekleştirdim.
    4. Hashtable kavramında bazı değerlere erişmek istediğimiz zaman “Enumeration” yapısını kullanırız. Bu yüzden bizde projemiz içerisinde bu yapıya yer verdik.
    5. Enumeration tanımlamasını gerçekleştirdikten sonra uygulama içerisinde değerlerin sıralı bir şekilde kullanıcıya gösterilmesi için “While” döngüsü oluşturarak içerisine gerekli kod satırlarını yazdım.
    6. Bu işlemlerden sonra hashtable için hazırlamış olduğum örnek uygulamamızın kod satırları aşağıdaki gibi oldu.

      import java.util.Enumeration;
      import java.util.Hashtable;
      import java.util.Scanner;
      
      public class Main {
      
          public static void main(String[] args) {
      
              ///---> Değişken Tanımlaması <---\\\
              String ayrac = new String(new char[15]).replace("\0","-");
      
              ///---> Sözlük Yapımız İçin Generic Bir Hashtable Tanımlaması Yapalım <---\\\
              Hashtable <String, String> sozluk = new Hashtable<>();
      
              ///---> Sözlük Yapımıza Bazı Kelimeler Ekleyelim <---\\\
              sozluk.put("Apple","Elma");
              sozluk.put("Table","Masa");
              sozluk.put("Chair","Sandalye");
              sozluk.put("Newspaper","Gazete");
              sozluk.put("Banana","Muz");
      
              ///---> Değişken Tanımlamaları <---\\\
              int puan = 0, dogru = 0, yanlis = 0;
              Scanner scanner = new Scanner(System.in);
      
              System.out.println(ayrac+"\n < Hashtable Örnekleri > \n"+ayrac);
              System.out.println("-> Karşınıza Türkçe - İngilizce rastgele bazı kelimeler çıkacak.\n-> Lütfen gelen kelimenin karşılığını yazın.\n"+ayrac);
      
              Enumeration keys = sozluk.keys();
      
              while(keys.hasMoreElements()){
                  String key = (String) keys.nextElement();
                  String value = sozluk.get(key);
                  System.out.print("-> ["+key+"] Metinin Karşılığını Yazın: ");
                  String scan = scanner.next();
                  if(scan.equals(value) == true) {
                      puan += 10;
                      dogru += 1;
                  }
                  else{
                      puan -= 10;
                      yanlis += 1;
                  }
                  System.out.println(ayrac);
              }
              System.out.println("-> Puanınız: "+puan+"\n-> Doğru Sayınız: "+dogru+"\n-> Yanlış Sayınız: "+yanlis+"\n"+ayrac);
          }
      }
      

    Kod Çıktısı:

    Java Hashtable Sözlük Örneği
    Java Hashtable Örnekleri

    Benimle birlikte bu serüvene çıkarak “Java Hashtable Nedir” sorusuna cevap aradığınız ve bu rehber içeriğin sonuna kadar beni yalnız bırakmadığınız için teşekkür ederim (🙏🏻). Eğer, konuya devam etmek ve “Hashtable” konusunu hakkında farklı bir kaynaktan bilgi almak isterseniz sizlere Oracle tarafından hazırlanmış rehber içeriğini tavsiye ederim. Bahsetmiş olduğum rehber içeriğine buraya tıklayarak ulaşabilirsiniz.

    Unutmayın, aklınıza takılan herhangi bir soru ya da konu işleyişi ile ilgili önerileriniz veya eleştirilerinizi aşağıda yer alan yorum yap kısmından bana iletebilirsiniz.👋🏻

Yorum Yap

Yazar Hakkında

Yazmayı, öğrenmeyi, öğrendiklerini paylaşmayı , kodlamayı ve günün birinde Yönetim Bilişim Sistemleri Uzmanı olmanın hayalini kuran birisiyim.

Yorum Yap