Sponsor Reklam 


29.10.2008 (04:24)

 Hashtable Kullanımı 
Daha önce ArrayList'ten ve Vector kullanımından bahsetmiştik. Anahtar ve değer çiftlerini Hashtable hash tablosunda saklar. Vector'lerde olduğu gibi senkronizedir.

Hash tablosunda her anahtara karşılık bir değer (value) bulunmaktadır. Bu değerler saklamak istediğimiz objelerdir. Anahtarlar (keys) ise eşsiz (unique) objelerdir ve birbirlerinden farklı olmak zorundadır. Çünkü her anahtar kendine bağlı değere ulaştırmalıdır. Ayrıca her anahtar saklanırken hashleme (hashing) işleminden geçirilmektedir ve elde edilen sonuç depolanan nesnenin adresi veya indeksidir.

Vector ve ArrayList'te gibi Hashtable da util paketinin (koleksiyonlar çatısının, collections) bir sınıfıdır. Bu sınıf contains(Object), containsKey(Object), containsValue(Object), elements(), get(Object), isEmpty(), keys(), rehash(), remove(Object), size() gibi metodları içerir. Ayrıca put(Object, Object) metodu ile anahtar-değer çiftlerini tabloya eklenir.

Hashtable kullanımı ilgili şu örneğe bakalım:

package kodcu.net;

import java.util.Hashtable;
import java.util.Enumeration;

public class HashtableTest {

  public static void main(String[] args) {
    // Hashtable oluşturalım
    Hashtable telephone = new Hashtable();
    // Değerler ekleyelim
    telephone.put("02120000000", "Ahmet Demir");
    telephone.put("02121111111", "Ahmet Işık");
    telephone.put("02122222222", "Ahmet Demir");
    telephone.put("02123333333", "Baki Ufuk");
   
    // Enumeration kullanarak anahtar ve değerleri yazdıralım
    Enumeration telephoneEnum = telephone.keys();
    String key;
    String value;
    while (telephoneEnum.hasMoreElements()) {
      key = (String) telephoneEnum.nextElement();
      value = (String) telephone.get(key);
      System.out.println(key + " " + value); 
    }
  }

}

Ekran çıktısı şu şekildedir:

02120000000 Ahmet Demir
02121111111 Ahmet Işık
02122222222 Ahmet Demir
02123333333 Baki Ufuk

Anahtarlar (telefon numaraları) görüldüğü gibi birbirinden farklı iken değerler (isimler) aynı olabilmektedir.

Vector kullanımında olduğu gibi Enumeration'dan faydalanırken keys() yerine
telephoneEnum = telephone.elements();
şeklinde elements() metodundan da yararlanabiliriz. Fakat Vector'lerde olduğu gibi Enumeration yerine Iterator'ü doğrudan kullanamayız. Set (küme) sınıfından yararlanarak şu şekilde kullanabiliriz ve yukarıdaki ekran görüntüsünün aynısını alabiliriz:

Set telephoneSet = telephone.keySet();
Iterator telephoneIterator = telephoneSet.iterator();
while (telephoneIterator.hasNext()) {
  key = (String) telephoneIterator.next();
  System.out.println(key + " " + telephone.get(key));
}

Bu kodun çalışması için tabii Set ve Iterator sınıflarının da import edilmiş olması gerekmektedir.
Imza: admin








Yazilar kaynak gosterilmeden kopyalanamaz © www.kodcu.net // Twitter