Hashtable ve Hashmap
Hashtable ve hashmap'ler, günümüzde web tabanlı uygulamaların çoğu ve diğer birçok uygulama için çok kullanılan veri yapılarıdır. Bu veri yapıları, belirli verileri tanımlayıcılarına ve ilişkili değerlere göre sıralamaya yardımcı olur. Temel olarak bu veri yapıları, geliştiricilerin, anahtarlar olarak da bilinen tanımlayıcıların çoğunu değerlerine göre kolay ve verimli bir şekilde sıralamalarına yardımcı olur. Tüm bu veri yapılandırma süreci, hash fonksiyonlarının yardımıyla tamamlanır.
Hashtable Veri Yapısı
Bilgisayar bilimi alanında, hashtable, anahtar olarak da adlandırılan belirli değerleri içeren büyük verileri saklama yeteneğine sahip veri yapısı olarak tanımlanabilir. Bu anahtarların saklanması sırasında, dizi olarak bilinen başka bir liste ile eşleştirilmeleri gerekir. Anahtarların dizilerle tüm bu eşleşmesi, karma işlevleri kullanılarak tamamlanır.
Bu karma işlevlerin temel amacı, atanan anahtarların her birini dizideki karşılık gelen ve eşleşen değerine bağlamaktır. Bu işlem karma olarak bilinir. Ve bu genellikle, hashtable'ı düzgün ve tamamen biçimlendirdikten sonra yapılır, böylece çalışması sırasında herhangi bir düzensiz sorun ortaya çıkmaz.
Karma tablonun eksiksiz ve verimli çalışması, verimli bir şekilde tasarlanmış ve biçimlendirilmiş karma işlevlerine bağlıdır. Genellikle verimli bir karma işlevi, anahtarlar ve dizi listesindeki dağıtım üzerinde tam kontrol sağlar. Bazen özet fonksiyonlarının çalışması sırasında özet çakışması meydana gelebilir. Bu çarpışmanın nedeni dizide bulunan aynı değere karşılık gelen iki fark anahtarının oluşmasıdır.
Bu çarpışma problemini çözmek için, hash fonksiyonları genellikle aynı anahtarlar için bazı farklı karşılık gelen değerleri bulmak için tam veri yapısını yeniden yürütür. Hashtable anahtarlarının sayısı sabit olmasına rağmen yine de yinelenen anahtarlar bu tür karma çarpışmaların nedeni olabilir.
Hashmap Veri Yapıları
Hashtable ve hashmap, yapılandırma amaçları aynı olduğu için aynı veri yapısına verilen adlar olsa da, bunların kolayca sınıflandırılabileceği küçük bir fark vardır. Hash fonksiyonları ve hash çarpışmaları hakkında konuşurken, hashmap, hashtable'ınkine benzer şeyleri de gözlemler. Benzer şekilde, veri yapısında bulunan değerler ve anahtarlar, bu değerlerin serileştirildiği hashtable'daki gibi serileştirilmez.
Hashtable ve Hashmap arasındaki fark:
Hashtable ve hashmap veri yapıları arasındaki dakika farkları aşağıda verilmiştir:
• Hashmap boş değerlerin hem anahtarları hem de değerleri olmasına izin verirken, hashtable veri yapılandırmasında boş değerlere izin vermez.
• Hashmap'in içinde yinelenen anahtarlar olamaz, bu nedenle orada anahtarların yalnızca tek bir değerle eşlenmesi gerekir. Ancak karma tablo, içinde yinelenen anahtarlara izin verir.
• Hashmap, temelde arızaya karşı güvenli olan bir yineleyici içerir, ancak karma tablo, arızaya karşı güvenli olmayan bir numaralandırıcı içerir.
• Hashmap'e erişim senkronize değilken hashtable'a erişim masada senkronize edilir.