public HashTable(int initialSize, IHashFunction hashFunction) { buckets = new ListString[initialSize]; this.hashFunction = hashFunction; for (var i = 0; i < initialSize; ++i) { buckets[i] = new ListString(); } }
public HeshTable(int size) { this.size = size; keyTable = new ListString[size]; for (int i = 0; i < size; i++) { keyTable[i] = new ListString(); } }
/// <summary> /// Приватный метод который расширяет хэш таблицу при необходимости /// </summary> private void Extension() { var newBuckets = new ListString[2 * buckets.Length + 1]; for (var i = 0; i < newBuckets.Length; ++i) { newBuckets[i] = new ListString(); } foreach (var oldList in buckets) { for (var i = 0; i < oldList.Size(); ++i) { var str = oldList.Remove(); var hash = hashFunction.HashFunction(str) % newBuckets.Length; hash = hash >= 0 ? hash : -hash; newBuckets[hash].Add(str); } } buckets = newBuckets; }