Example #1
0
        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;
        }
Example #3
0
        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++;
        }
Example #4
0
        /// <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;
        }
Example #5
0
 public void Clear()
 {
     _count = 0;
     _array = new HashTableArray <TKey, TValue>(1000);
 }