public LinkedListHashTable(int initCapacity) { if (initCapacity < 1) { throw new ArgumentOutOfRangeException("initCapacity"); } _array = new HashTableArray <TKey, TValue>(initCapacity); _maxItemsAtCurrSize = (int)(initCapacity * _fillFac) + 1; }
public HashTable(int initialCapacity) { if (initialCapacity < 1) { throw new ArgumentOutOfRangeException("Intial Capacity"); } _array = new HashTableArray <TKey, TValue>(initialCapacity); _maxItemsAtCurrentSize = (int)(initialCapacity * _fillFactor) + 1; }
public void Add(TKey key, TValue value) { if (_count >= _maxItemsAtCurrSize) { HashTableArray <TKey, TValue> largerArr = new HashTableArray <TKey, TValue>(_array.Capacity * 2); foreach (var node in _array.Items) { largerArr.Add(node.Key, node.Value); } _array = largerArr; _maxItemsAtCurrSize = (int)(_array.Capacity * _fillFac) + 1; } _array.Add(key, value); _count++; }
/// <summary> /// Grows the array by twice the current size /// </summary> private void GrowArray() { //Create an array twice a large HashTableArray <TKey, TValue> largerArray = new HashTableArray <TKey, TValue>(_array.Capacity * 2); // Add each existing item to the new array foreach (var node in _array.Items) { largerArray.Add(node.Key, node.Value); } // Make the larger array the new hash table storage array _array = largerArray; // Calculate new max items value _maxItemsAtCurrentSize = (int)(_array.Capacity * _fillFactor) + 1; }
public void Clear() { _count = 0; _array = new HashTableArray <TKey, TValue>(1000); }