Ejemplo n.º 1
0
            public TV Search(TK key)
            {
                // Создаем экземпляр класса валидации.
                var validate = new ValidateClass <TK, TV>();

                validate.ValidateKey(key);

                validate.ValidateKeySize(key);

                var hash = GetHash(key);

                if (!_hashMapItems.ContainsKey(hash))
                {
                    throw new KeyNotFoundException($"There is no such key: {nameof(key)}");
                }

                var oldHashTableItem = _hashMapItems[hash];

                if (oldHashTableItem != null)
                {
                    var item = oldHashTableItem.SingleOrDefault(obj =>
                                                                EqualityComparer <TK> .Default.Equals(obj.Key, key));

                    if (item != null)
                    {
                        return(item.Value);
                    }
                }

                // Возвращаем пустое значение.
                return(default(TV));
            }
Ejemplo n.º 2
0
            // Метод удаления по ключу.
            public void Delete(TK key)
            {
                // Создаем экземпляр класса валидации.
                var validate = new ValidateClass <TK, TV>();

                // Проверяем наличие ключа.
                validate.ValidateKey(key);

                // Проверяем размер ключа.
                validate.ValidateKeySize(key);

                var hash = GetHash(key);

                if (!_hashMapItems.ContainsKey(hash))
                {
                    throw new KeyNotFoundException($"There is no such key: {nameof(key)}");
                }

                var oldHashTableItem = _hashMapItems[hash];

                var item = oldHashTableItem.SingleOrDefault(obj => EqualityComparer <TK> .Default.Equals(obj.Key, key));

                // Если элемент найден - удаляем.
                if (item != null)
                {
                    oldHashTableItem.Remove(item);
                }
            }
Ejemplo n.º 3
0
            public int GetHash(TK key)
            {
                // Создаем экземпляр класса валидации.
                var validate = new ValidateClass <TK, TV>();

                validate.ValidateKey(key);

                validate.ValidateKeySize(key);

                return(key.ToString().Length);
            }