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