Хеш таблица (Hash Table) - Структуры данных C#

Поділитися
Вставка
  • Опубліковано 24 бер 2019
  • Хеш таблица C# hashtable C# - Структуры данных на языке программирования C#
    На этом занятии мы рассмотрим такую структура данных как Хеш таблица (Hash Table). Это специальная структура данных, которая позволяет хранить информацию в виде пар ключ-значение. Наиболее близко к ней понятие ассоциативного массива. Основное преимущество хеш таблицы - выполнение операций вставки, поиска и удаления за O(1).
    Подписывайтесь на информационные каналы курса, чтобы ничего не пропустить и не потерять информацию:
    Закрытый чат для участников курса: vk.cc/8Ev4Gv
    Рассылка с оповещениями в ВК: vk.cc/86Y7Pa
    Подписывайтесь на мои социальные сети, там много всего интересного и полезного:
    codeblog
    tele.click/codeblog
    zen.yandex.ru/codeblog
    Поддержать канал: www.donationalerts.ru/r/shwanoff
    Кстати, меня зовут Шванов Вадим, и я программист на языке C# уже больше 8 лет, а также я являюсь автором ресурсов для разработчиков CODE BLOG. На этом канале я рассказывают про IT, технологии и веду курс C# с нуля под названием Учим Шарп. В его рамках мы рассматриваем язык программирования c# с нуля, синтаксис, структуры данных, алгоритмы, паттерны проектирования и многое другое. Эти уроки c sharp подойдут для начинающих и для тех кто хочет подробнее изучить платформу .net и среду разработки visual studio. Для меня важно не только показать практическое применение языка си шарп и платформы dotnet, но и объяснить базовые идеи программирования. Уроки с# выходят как минимум два раза в неделю в понедельник и четверг в 20-00. C# курс рассчитан на то, чтобы изучить программирование с нуля. Все занятия веду я сам - опытный программист c#. Разработка ведется в IDE visual studio c#. Подписывайтесь, впереди еще много интересного и полезного об it, программировании как для начинающих, так и для более опытных программистов c#.
    Объект хеш таблица c# hashtable c# состоит из контейнеров, содержащих элементы коллекции. Контейнер - это виртуальная подгруппа элементов внутри объекта Hashtable, которая обеспечивает более простой и быстрый поиск и извлечение, чем в большинстве коллекций. Каждый контейнер связан с хэш-кодом, который создается с помощью хэш-функции и основан на ключе элемента.
    Подробный курс по языку программирования C#:
    • Преимущества и недоста...
    Подробный курс по структурам данных на языке программирования C#:
    • Связный список (linked...
    Подробный курс по алгоритмам сортировки на языке C#:
    • Сортировка пузырьком (...
    Разговоры о программировании, мотивации, и ответы на IT вопросы:
    • Практика программирова...
    #программирование #программист #csharp #ityoutubersru #codeblog

КОМЕНТАРІ • 44

  • @CODEBLOG
    @CODEBLOG  5 років тому +3

    Хеш таблица C# hashtable C# - Структуры данных на языке программирования C#
    На этом занятии мы рассмотрим такую структура данных как Хеш таблица (Hash Table). Это специальная структура данных, которая позволяет хранить информацию в виде пар ключ-значение. Наиболее близко к ней понятие ассоциативного массива. Основное преимущество хеш таблицы - выполнение операций вставки, поиска и удаления за O(1).
    Объект хеш таблица c# hashtable c# состоит из контейнеров, содержащих элементы коллекции. Контейнер - это виртуальная подгруппа элементов внутри объекта Hashtable, которая обеспечивает более простой и быстрый поиск и извлечение, чем в большинстве коллекций. Каждый контейнер связан с хэш-кодом, который создается с помощью хэш-функции и основан на ключе элемента.
    Кстати, меня зовут Шванов Вадим, и я программист на языке C# уже больше 8 лет, а также я являюсь автором ресурсов для разработчиков CODE BLOG. На этом канале я рассказывают про IT, технологии и веду курс C# с нуля под названием Учим Шарп. В его рамках мы рассматриваем язык программирования c# с нуля, синтаксис, структуры данных, алгоритмы, паттерны проектирования и многое другое. Эти уроки c sharp подойдут для начинающих и для тех кто хочет подробнее изучить платформу .net и среду разработки visual studio. Для меня важно не только показать практическое применение языка си шарп и платформы dotnet, но и объяснить базовые идеи программирования. Уроки с# выходят как минимум два раза в неделю в понедельник и четверг в 20-00. C# курс рассчитан на то, чтобы изучить программирование с нуля. Все занятия веду я сам - опытный программист c#. Разработка ведется в IDE visual studio c#. Подписывайтесь, впереди еще много интересного и полезного об it, программировании как для начинающих, так и для более опытных программистов c#.

  • @user-ey8tv3pf7r
    @user-ey8tv3pf7r Рік тому

    Спасибо за ваш труд, мне помогло понять что такое хеш и как его реализовывать в C#, ваш вклад бесценен

  • @user-nv4yz5bt4g
    @user-nv4yz5bt4g 4 роки тому +1

    Спасибо за интересный урок - это моя первая хеш таблица !

  • @user-ls2ms5qc8h
    @user-ls2ms5qc8h 4 роки тому +1

    Спасибо вам большое,доходчиво и понятно, пошагово ,с комментариями и на русском,просто находка)

  • @ivanomelchenko1895
    @ivanomelchenko1895 3 роки тому

    спасибо за уроки +++

  • @user-dw2gk7cg9j
    @user-dw2gk7cg9j 3 роки тому +1

    Просто лучший

  • @sergeydoomskiy9239
    @sergeydoomskiy9239 2 роки тому

    Вопрос про получения хеша, есть класс содержащий массив строк: длина до 10 символов. Переопределяем GetHashCode длину строки + (первый символ*10)+(последний*100).
    Если мы будет вызывать GetHashCode каждый раз во время поиска то получается довольно затратно по ресурсам, выходит нужно заранее выполнил эти операции и занести хеши в отдельную таблицу? Или я неправильно понял метод генерации хеша?

  • @ivanomelchenko1895
    @ivanomelchenko1895 2 роки тому

    спасибо за стримм

  • @bekapochitev8144
    @bekapochitev8144 3 роки тому

    Вадим вернись!!! Без тебя никак, почему нет новых видео)))))

  • @artemlyubivoy3277
    @artemlyubivoy3277 4 роки тому +1

    Спасибо за видео.
    Только я вот чего не понял в строке:
    item.ToString().Length % items.Length;
    запись % items.Length нужна для того, что бы не было выхода за границы массива. Каким образом эта запись не даст выйти за границы массива?

    • @CODEBLOG
      @CODEBLOG  4 роки тому +3

      % это остаток от деления. то есть, когда у тебя есть 53%10 результатом будет 3. Результат никогда не может быть больше чем правый аргумент

  • @bekapochitev8144
    @bekapochitev8144 3 роки тому +1

    Можешь сделать туториал про Git)) Заранее спасибо)

  • @user-nv4yz5bt4g
    @user-nv4yz5bt4g Місяць тому

    Пытался создать переводчик - программу объясняющие термины . Вместо Хеш коллекции я использовал коллекцию List состоящую из двухполярных структур . Если термин по имени находится в name1, то открывается поле name2 - перевод термина этого члена коллекции . Проблема как создать метод аккуратно записывающего коллекцию в бинарный файл , чтобы потом другой метод прочитал файл и правильно загрузил коллекцию из файла . Может покажите ролик как загрузить массив или коллекцию из файла .

  • @tonikkk25
    @tonikkk25 4 роки тому

    Спасибо. Но остаётся один вопрос. Почему независимые хэш-генераторы генерируют некое число X одинаково? Они все работают по одному и тому же алгоритму? Раз хэш уникален, значит у него в шифре есть некоторое рандомное число, соль и тому подобное? На разных сайтах выдаётся один и тот же хэш по, например числу 1. Почему хэш-генераторы выдают одно и тоже?

  • @friendlyguy7813
    @friendlyguy7813 4 роки тому

    Такой вопрос. На собеседовании на джуна, спрашивают только теорию или могут попросить реализовать все в коде? Имею ввиду структуры данных

    • @CODEBLOG
      @CODEBLOG  4 роки тому

      Вполне возможно попросят реализовать простую структуру вроде стека

  • @user-xw1by8yo9e
    @user-xw1by8yo9e 4 роки тому

    Надеюсь, на собеседовании джунов не просят реализовывать эти таблицы, множества и т.д. Знаешь об этом что-нибудь Вадим? Списки и очередь смогу реализовать, но с таблицами и множествами у меня проблемы(

  • @dGDeika
    @dGDeika 3 роки тому

    Объясните ,пожалуйста, кто понимает. Функция GetHash возвращает остаток от деления длины строки на размерность массива. В этом случае функция хеширует данные через длину строки. Но могла бы хешировать через сумму цифр числа (как было в примере с числом 123, которое записывалось в 6 ячейку из -за того, что сумма цифр 1+2+3=6) ?????

  • @AShahabov
    @AShahabov 4 роки тому

    Когда в самом начале приводился пример на слове «Книга», то мне показалось, что у этого значения берется первая буква «К», которая есть ключ теперь и уже вычисляем хэш этой буквы «К». В данном примере говорились про все компоненты: ключ, значение, хэш.
    На 20:00 минуте же приводиться пример со словом «Привет» и я что-то совсем запутался. Мы определили, что хэшем для этого значения есть «П». То есть, есть значение: Привет, есть хэш: П, а что есть ключ?

    • @CODEBLOG
      @CODEBLOG  4 роки тому +2

      Это зависит от хеш-функции. Если мы не делаем ничего - это тоже в какой-то степени хеш-функция )))

  • @user-mn8yu4sx2h
    @user-mn8yu4sx2h 3 роки тому +3

    Супер подача! только музыка немного мешает, это не поделки из картона, что бы был какой-то муз. фон=)

  • @proit6623
    @proit6623 3 роки тому

    Я правильно понимаю, когда переопределили GetHash то фактически уже метод возвращает не адрес в памяти, а то что мы переопределили?
    при объявлении
    var person = new Person () {Age =27, Gender = 1, Name = "Polina"}
    добавлении в таблицу:
    superHashTable.Add(person);
    superHashTable.Add(new Person () {Age =27, Gender = 1, Name = "Polina"});
    при проверке:
    Control.WriteLine(superHashTable.Search(person)); --- true
    Control.WriteLine(superHashTable.Search(new Person () {Age =27, Gender = 1, Name = "Polina"})); -- false
    как проверяет Contains на наличие объекта в коллекции? в отладке показывает что в создаваемую таблицу добавление 2ух полин происходит, но при проверке выдает false

  • @flametheproducer1036
    @flametheproducer1036 4 роки тому

    Подскажите как вывести в данном случае таблицу на кансоль

    • @CODEBLOG
      @CODEBLOG  4 роки тому +1

      Реализовать метод вывода :) а в чем именно сложность? читай данные и выводи )

  • @lewonderfulgeorgian3335
    @lewonderfulgeorgian3335 3 роки тому +1

    5:03 Давайте расмотрим бытовой пример: вы хотите создать библиотеку. Эх, уже 3 дня как новую библиотеку не создаю

  • @amwrag
    @amwrag 5 років тому

    Передавать и хранить Key внутри класса Item для последней реализации судя по коду необходимости нет, он нигде потом не используется.

    • @CODEBLOG
      @CODEBLOG  5 років тому

      по-разному. обычно ключ нужен для быстрого поиска именно по нему. это как идентификатор в бд

  • @pashavarava186
    @pashavarava186 4 роки тому

    1:14:20 - что делает данная хеш функция?

    • @CODEBLOG
      @CODEBLOG  4 роки тому +1

      Берет первый символ от ключа и преобразует в число (у каждой буквы есть свой числовой код, вот его и получаем)

  • @user-nv4yz5bt4g
    @user-nv4yz5bt4g 4 роки тому +3

    Код ваших программ-примеров очень трудно переписать с роликов . Код мелкий , регионы закрыты , код могут перекрываться другими окнами . Вы пустите медленно пустите камеру с большим разрешением сверху вниз можно это делать в конце ролика или после каждого большого изменения .

  • @user-nv4yz5bt4g
    @user-nv4yz5bt4g 4 роки тому

    Вы наверно этот ролик недавно изменили ?

  • @IGANTERI
    @IGANTERI 3 роки тому

    Топовый урок когда по итогу даже не запустил программу и не показал как должно все это выглядеть, в чем смысл теории когда на практике 0

  • @rhseo4249
    @rhseo4249 4 роки тому +1

    Рок Музыка на фоне, сильно мешает

    • @CODEBLOG
      @CODEBLOG  4 роки тому

      сейчас я ее делаю тише )

  • @user-ii9xe4pu6x
    @user-ii9xe4pu6x 3 роки тому +2

    Как-то уж долго и нудно. Надо делать видео намного короче и делать меньше пауз. Короче, речь должна заранее продумана и подготовлена.

  • @chichikov777
    @chichikov777 4 роки тому +2

    Самое сложное в твоих видео - это отвлечение постоянно от темы, остановки, чтение комментов. Спасибо конечно за видосы, но блин не отвлекайся!!!! запиши просто урок без остановок, будет в сто раз лучше.