Хеш-таблица - Самая Популярная Структура Данных

แชร์
ฝัง
  • เผยแพร่เมื่อ 5 ก.พ. 2025
  • Пройдите бесплатный курс от Яндекс Практикума - "Какую профессию в программировании выбрать": ya.cc/t/UrGOef...
    Токен: LdtCKa7Ux
    Разбираем как работает HashSet - структура данных, которая позволяет проверять в ней наличие любого элемента за О(1) времени.
    Затем модифицируем ее так, чтобы получить хеш-таблицу, то есть структуру данных, хранящую пары ключ-значение.
    Обе эти структуры данных очень популярны и используются в любом проекте. А еще на их знание очень часто задают вопросы на собеседовании, и три самых популярных из них мы также разберем в этом видео.

ความคิดเห็น • 440

  • @sashalukin
    @sashalukin  9 หลายเดือนก่อน +3

    Создал Telegram канал, в котором рассказываю о жизни в Лондоне, работе в Google и подготовке к собеседованиям. Подписывайтесь: t.me/saschalukin

    • @cinop0
      @cinop0 7 หลายเดือนก่อน +1

      Почему в JavaScript ты используешь var???? Есть же let

  • @sberdiug
    @sberdiug ปีที่แล้ว +484

    Мне бы целый курс в таком стиле по всем структурам данных! 👍

    • @mtr-code
      @mtr-code ปีที่แล้ว +29

      кстати, да, даже платный бы купил

    • @Unkmasold
      @Unkmasold ปีที่แล้ว +2

      У Седжвика на курсере очень понятный курс

    • @sberdiug
      @sberdiug ปีที่แล้ว +1

      @@mtr-code аналогично. за такой курс готов заплатить!

    • @bykaxagod597
      @bykaxagod597 ปีที่แล้ว

      Karpov courses. Не реклама, сам планирую туда пойти.

    • @ФоксСенна
      @ФоксСенна ปีที่แล้ว

      Да нахууй надо! Нет, то, что автор старался - это видно. Только его "объяснение" выглядит как рандомный плевок в лицо адекватности. Почему бакетов именно 5, кто должен реализовывать вычисление хэша, для чего эта вся петрушка ВООБЩЕ затеяна... Короче объяснение - лажа. Хуже - только зачитывание на вебку гугленых статей с кислой рожей. Но автор старался. Но цельного, логичного, понятного, непротиворечивого, фундаментального - не получилось...

  • @cleverabbit
    @cleverabbit ปีที่แล้ว +89

    Александр, я не знаю какой ты программист, но объясняешь очень хорошо. У тебя талант.

    • @leonidkazak1918
      @leonidkazak1918 5 หลายเดือนก่อน +3

      Я думаю, пиздатый он программист

  • @vidnysom
    @vidnysom ปีที่แล้ว +29

    Я вот вообще ни разу не программист, но разобрался что к чему в выходной и под пивко. Александр, у вас талант!

    • @slmpnv
      @slmpnv 10 หลายเดือนก่อน +6

      vidnyskuf)

  • @ДенисБахтиев
    @ДенисБахтиев ปีที่แล้ว +32

    Не оставляю почти никогда на ютубе комментарии, но это просто фантастическое объяснение, спасибо за проделанную работу!)

  • @2difficult2do
    @2difficult2do ปีที่แล้ว +17

    Супер! Это лучшее, наглядное и понятное объяснение, даже моя бабушка поняла.🤗
    Спасибо, Александр, за ваши подробные объяснения!!!

  • @georgiy_kulagin
    @georgiy_kulagin ปีที่แล้ว +123

    Отличное объяснение, было бы здорово услышать про графы и их подтипы, деревья итд)

  • @panfilovandrey
    @panfilovandrey ปีที่แล้ว +38

    Да, присоединяюсь к остальным комментариям: очень понятное и грамотное объяснение. В продолжение этой темы можно было бы разобрать способы написания хеш-функций с равномерным распределением для разных типов данных. Это тоже нужная в данной задаче (когда сами делаем хеш-сет) фишка. Очень нравятся твои видео, спасибо и за материал, и за подачу. Хотелось бы побольше :)

    • @ФоксСенна
      @ФоксСенна ปีที่แล้ว

      6лять, почему бакетов ПЯТЬ?

    • @yuriytheone
      @yuriytheone ปีที่แล้ว

      Это легко. Только выбери хэш алгоритм, а затем выполни нормализацию. От типа нормализации будет зависеть как бклет расти структура при уведичении.

    • @yuriytheone
      @yuriytheone ปีที่แล้ว

      ​@@ФоксСеннабакетов может быть сколько угодно, все зависит от реализации...

    • @panfilovandrey
      @panfilovandrey ปีที่แล้ว

      @@yuriytheone так вот как раз вопрос в сравнении хеш алгоритмов

    • @nkjhk9772
      @nkjhk9772 11 หลายเดือนก่อน

      @@ФоксСенна просто решили что 5, это не константа, можешь хоть сразу 100 ебнуть

  • @RRRozh
    @RRRozh ปีที่แล้ว +5

    Где же ты был 3 дня назад, когда у меня это на собеседовании спрашивали...
    Спасибо за крутое объяснение, не понимал эту магию, а теперь понимаю)

    • @Wo_Wang
      @Wo_Wang 10 หลายเดือนก่อน

      Программирую встраиваемые системы больше 30 лет. За это время функция хеша вообще ни разу не понадобилась...
      :-)

  • @GromStal
    @GromStal 10 หลายเดือนก่อน +1

    Это одна из самых важных тем. И объяснение просто фантастическое. Браво. Лайк

  • @mukaddastaj5223
    @mukaddastaj5223 5 หลายเดือนก่อน

    Это шикарно. Спасибо огромное, помог как никто. Я и статьи читала и у учителя одного спрашивала, никто так нормально и не объяснил

  • @takahashisan2244
    @takahashisan2244 ปีที่แล้ว +10

    Понятно и просто. Я в восторге! Буду ждать ещё подобных видео ❤

  • @antonvoronin1654
    @antonvoronin1654 ปีที่แล้ว +1

    Обычно не оставляю комментариев, но здесь не могу не прокомментировать: автор молодец! Очень доступно объяснил материал

  • @АртурКоролёв-в1ч
    @АртурКоролёв-в1ч ปีที่แล้ว +4

    офигенный задний фон, красивое оформление + понятно и удобно, спасибо за видос!

  • @davidalexandr5716
    @davidalexandr5716 ปีที่แล้ว +4

    Прикольный формат, быстро и без лишней информации!

  • @yuryconnect4785
    @yuryconnect4785 10 หลายเดือนก่อน +1

    Отличное видео, сжато и простым/ доходчивым языком!
    Я порекомендовал его всем своим сокурсникам в академии, респект!!! :)

  • @J1mDGriz
    @J1mDGriz ปีที่แล้ว +1

    Спасибо за объяснение темы. Несколько раз вчера прочитал эту тему с примерами кода в уроке на своём обучении. Ничего не понял.
    После вашего видео всё становится понятно

  • @SorokinAU
    @SorokinAU ปีที่แล้ว +3

    Ваш канал - это находка!

  • @semimaks
    @semimaks 10 หลายเดือนก่อน

    Редко оставляю комментарии, но ваша работа восхищает. Четко, наглядно и по существу. Спасибо!

  • @timgapps9878
    @timgapps9878 ปีที่แล้ว +1

    Отличное видео. Мне как новичку в изучении java очень помогло разобраться в работе hashset и hashmap, а также понять как связаны методы hashCode() и equals() и для чего они нужны, спасибо огромное за твои уроки

  • @fedorok12345
    @fedorok12345 ปีที่แล้ว +2

    Объяснение реально очень классное, как-то до этого в целом понимал эту структуру, но здесь прям все встало на свои места

  • @alexschiopu
    @alexschiopu ปีที่แล้ว +1

    Огонь!!! 🔥🔥🔥🔥🔥🔥
    До этого просто использовал это и не задавался, что там под копотом и как.
    А теперь с пониманием буду использовать)))
    Спасибо большое за простое и понятное объяснение!!!
    Саша, продалжай в том же духе, всё круто!!!

  • @louis-nicoladavout7580
    @louis-nicoladavout7580 ปีที่แล้ว +1

    Редко пишу коммент. Но это того стоит.
    Лучшее объяснение hash сетов и таблиц. ❤

  • @user-lk8n0fgjk
    @user-lk8n0fgjk ปีที่แล้ว +6

    Александр, отличное видео, впрочем как все Ваши ролики! Спасибо!

  • @inbluegirl
    @inbluegirl ปีที่แล้ว

    Огромное спасибо за популяризаторский стиль!!! Теперь поняла, наконец-то, что из себя эта хеш-таблица представляет

  • @Василий-ю2х8и
    @Василий-ю2х8и ปีที่แล้ว +1

    Редко пишу комментарии, но тут не удержался) спасибо за такой детальный, а самое главное грамотный разбор, контент усваивается легко, слушать интересно, подписался, пойду смотреть предыдущие ролики)

  • @Сергей-БСД
    @Сергей-БСД 9 หลายเดือนก่อน

    Формат крайне удобный и понятный. Спасибо! Стоит продолжать в этом духе.

  • @svetlanamazhaykina6918
    @svetlanamazhaykina6918 10 หลายเดือนก่อน

    Спасибо за Ваш труд! Кто ясно мыслит - тот ясно излагает!

  • @sit_on_me_Nagatoro
    @sit_on_me_Nagatoro หลายเดือนก่อน

    Спасибо большое. Очень доступно, но с важными деталями. Прям вау.

  • @igornamakonov6472
    @igornamakonov6472 ปีที่แล้ว +3

    Очень хорошо рассказал, спасибо. Будет интересно посмотреть про другие структуры данных. Trees, linked list, graphs.

  • @kirillzhukov1675
    @kirillzhukov1675 ปีที่แล้ว +2

    Больше бы таких видео, где очень доступно и понятно

  • @lagert5302
    @lagert5302 5 หลายเดือนก่อน

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

  • @elseff
    @elseff ปีที่แล้ว +3

    Очень понятно! Закрепил теперь точно эту структуру данных! Спасибо

  • @madyogi2108
    @madyogi2108 ปีที่แล้ว

    Как приятно тебя слушать, смотреть твои видео, продолжай в том же духе!
    Изменено: я настаиваю, чтобы ютуб создал официальный плейлист с 1000 самых понятных видео на ютубе, и твое будет первое!!

  • @suspiciousgoose7904
    @suspiciousgoose7904 10 หลายเดือนก่อน

    Только прочитал в книге про хеши, так вот видос тебе. Да какой качественный и понятный
    Спасибо ❤

  • @bertzaza
    @bertzaza ปีที่แล้ว +1

    Объяснение - мое почтение! Все понятно с первого раза)

  • @aleksey8530
    @aleksey8530 ปีที่แล้ว +1

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

  • @omgplznooo
    @omgplznooo ปีที่แล้ว +1

    Это объяснение просто афигенно!
    На моем курсе это объяснялось очень криво... тут сильно лучше

  • @ЕгорРура
    @ЕгорРура ปีที่แล้ว

    Спасибо за ролик! Было очень ясно и доступно объяснено! И не знал что обычный объект js такие чудеса вытворяет!!!!

  • @shpritsgodx
    @shpritsgodx ปีที่แล้ว

    Спасибо моему другу,Жаке. За ссылку на видео.Очень интересно

  • @igorglushatov1948
    @igorglushatov1948 ปีที่แล้ว +17

    Хорошее и простое объяснение без математических з**бов. Спасибо большое

  • @nikitafedorov5884
    @nikitafedorov5884 ปีที่แล้ว +5

    Большое спасибо. Отличное объяснение. Продолжай!

  • @КонстантинБелобородов
    @КонстантинБелобородов ปีที่แล้ว +1

    Очень приятная и интересная подача материала! Спасибо! Пожалуй подпишусь.

  • @Gavao1604
    @Gavao1604 ปีที่แล้ว

    Мужик, я ни хера не понял, что ты сказал, но ты мне близок. Ты заговорил и достучался до сердца.

  • @abuiman5251
    @abuiman5251 ปีที่แล้ว

    Спасибо, Саша!
    Для меня это лучшее объяснение которое я встречл👍🏻👍🏻👍🏻
    Не останавливайся пжл!

  • @vld_dmn
    @vld_dmn ปีที่แล้ว +2

    Это великолепное объяснение

  • @Hellen-qx3lb
    @Hellen-qx3lb 11 หลายเดือนก่อน

    Как здорово объясняешь ! Я не программист , но все поняла

  • @АлександрТаран-р9р
    @АлександрТаран-р9р ปีที่แล้ว +1

    коротенько и доходчиво. Спасибо за проделанную работу!

  • @dregster564
    @dregster564 ปีที่แล้ว

    еще одна находка для меня! круто, еще с примерами на нескольких языках

  • @АндрейНикола-п6ю
    @АндрейНикола-п6ю ปีที่แล้ว

    Спасибо за такое понятное и подробное объяснение! Отличная работа!

  • @nsdnight
    @nsdnight 11 หลายเดือนก่อน

    Лучшее видео по хеш-таблицам.

  • @ilyasavenok9051
    @ilyasavenok9051 ปีที่แล้ว

    Спасибо за видео. Было бы здорово увидеть объяснение, как работает функция hashCode() изнутри и как мы можем её переопределять.

  • @saigon9505
    @saigon9505 ปีที่แล้ว +2

    Очень интересно и понятно рассказано! Отличная подача материала

  • @TopMusicBeautifulLife
    @TopMusicBeautifulLife ปีที่แล้ว +2

    Спасибо большое! Продолжайте в том же духе!

  • @Poli.Pavlovich
    @Poli.Pavlovich 3 หลายเดือนก่อน

    Крутейшее объяснение! Для меня темп был немного быстрым, в основном смотрела на скорости 0.75 :)

  • @johnjonson4641
    @johnjonson4641 ปีที่แล้ว +1

    Ради таких видео я и плачу за интенет
    Спасибо!)

  • @winternight4754
    @winternight4754 ปีที่แล้ว +1

    Спасибо за ролик, давно смотрю ваши выпуски. Очень интересно и понятно.

  • @Алексейм-с7б
    @Алексейм-с7б ปีที่แล้ว +6

    Супер! ❤ спасибо! Можно вообще сделать разборы структур данных!? Например, про деревья 😅😊

  • @ИльяВласов-ф7к
    @ИльяВласов-ф7к 9 หลายเดือนก่อน

    Очень понятно и легко. Спасибо за детальное объяснение!

  • @andreimikhalkevich5633
    @andreimikhalkevich5633 ปีที่แล้ว

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

  • @FariusFriends
    @FariusFriends ปีที่แล้ว +1

    Теперь QR код есть ;). Смотрю тебя от когда у тебя было 4 видео на канале.... keep going :)

    • @sashalukin
      @sashalukin  ปีที่แล้ว +1

      Спасибо, только благодаря тебе и увидел!

  • @rost170
    @rost170 ปีที่แล้ว +1

    Это база. Объяснение потрясающее

  • @ПелагеяПетровак
    @ПелагеяПетровак 8 หลายเดือนก่อน

    Спасибо! у тебя талант объяснять)

  • @Isaac_ur
    @Isaac_ur 10 หลายเดือนก่อน

    Великолепное объяснение! Спасибо Вам!

  • @sergeinerobeev3501
    @sergeinerobeev3501 ปีที่แล้ว +1

    Спасибо! 👍Повторение-мать учения!

  • @ilyalevanov
    @ilyalevanov ปีที่แล้ว

    как раз на днях задался вопросом почему при использование хеш таблиц сложность поиска о(1), и тут твой видос! спасибо

  • @pridelander
    @pridelander 10 หลายเดือนก่อน

    Приятно слушать и смотреть, спасибо тебе!

  • @alcor9921
    @alcor9921 ปีที่แล้ว +11

    Впервые на канале и удивился как понятно ты объяснил данную тему.
    Спасибо за тот труд ❤
    Было бы круто, если б еще к твоему плейлисту разбора задач с собеседований из бигтеха прибавился и Нетфликс, пожалуйста

  • @cd6693
    @cd6693 ปีที่แล้ว

    Большое спасибо за пояснение, еще и на 3 языках)

  • @Lesha-v2j
    @Lesha-v2j ปีที่แล้ว

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

  • @tal_wolfrid
    @tal_wolfrid ปีที่แล้ว +1

    Очень круто объясняешь и визуально показываешь 💪

  • @obusis
    @obusis ปีที่แล้ว +1

    Отличный контент! Отличная подача! Ждём продолжения.

  • @secondskin25
    @secondskin25 ปีที่แล้ว

    То чувство, когда автор делает видео, только что бы всё это не забыть к своей старости.

  • @acthanger7420
    @acthanger7420 ปีที่แล้ว +1

    Крутой контент делаешь, спасибо)

  • @1dees253
    @1dees253 ปีที่แล้ว

    Лучшее и понятное видео по словорям/мапам, которое я видел. Одназначно заслужил подписку и лайкос)

  • @sberdiug
    @sberdiug ปีที่แล้ว +5

    Вау! Отличный урок! 👍

  • @alekseykirov4647
    @alekseykirov4647 ปีที่แล้ว

    Паря не останавливайся - эта годнота нужна, визуализация решает.

  • @daemon_alecto9586
    @daemon_alecto9586 ปีที่แล้ว +2

    Давай такое видео по stack/queue/dequeue

  • @MrGoodCatSCP
    @MrGoodCatSCP 9 หลายเดือนก่อน

    Ай, как хорошо слушать и смотреть! Рад, что алгоритмы показали такое видео)
    Оффтопный вопрос: а что за монитор?

  • @worldfree1190
    @worldfree1190 ปีที่แล้ว

    Вау! Смотрю уже довольно давно и каждый раз полный восторг

  • @believer.2001
    @believer.2001 ปีที่แล้ว +2

    Большое спасибо за "уроки", все предельно понятно и интересно изложено 👍
    Было бы неплохо увидеть твой ролик про сборщик мусора, частенько спрашивают на собеседованиях )

    • @ФоксСенна
      @ФоксСенна ปีที่แล้ว

      так ничерта же не понятно! я тут в каментах один адекватный?

    • @MrYbs-ie1jj
      @MrYbs-ie1jj ปีที่แล้ว

      ​@@ФоксСеннаа ты не умеешь писать.

  • @КириллКозырь-л9л
    @КириллКозырь-л9л ปีที่แล้ว +1

    Саша, большое спасибо!
    хороший материал

  • @СилуанПоцелуев
    @СилуанПоцелуев ปีที่แล้ว +36

    Коллизия - это совпадение хэшкода у двух разных объектов, а не факт попадания этих объектов в один бакет.
    Соответственно и логика проверки внутри бакета двухуровневая - когда попали в бакет и бежим по элементам, то сравниваем их сначала по хэшкоду и только если они совпадают то сравниваем по equals. По крайней мере для java это так

    • @andreibulatov2395
      @andreibulatov2395 ปีที่แล้ว +1

      100% true

    • @justDimoon
      @justDimoon ปีที่แล้ว

      Согласен 💯

    • @ahilesova_pyata
      @ahilesova_pyata ปีที่แล้ว

      Вроде бы автор правильно сказал, коллизия это попадание в один бакет нескольких элементов даже с разными хэшами. А проверка ключей в списке идёт, сначала по хэш коду, потом ссылки (==) и только потом equals(). Java. Но автор конечно, слишком обобщил и упростил

    • @СилуанПоцелуев
      @СилуанПоцелуев ปีที่แล้ว

      @@ahilesova_pyata Нет, коллизия к бакетам прямого отношения не имеет, автор неверно использует термин 'коллизия': ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BB%D0%BB%D0%B8%D0%B7%D0%B8%D1%8F_%D1%85%D0%B5%D1%88-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8

    • @ЫрысбекАбдималикоа
      @ЫрысбекАбдималикоа ปีที่แล้ว

      Если хеш-код разные то объекты разные, а если хеш-код одинаковые это значит что объекты одинаковые

  • @протон-ж7ч
    @протон-ж7ч 3 หลายเดือนก่อน

    материал подан просто: великолепно

  • @DefleMask
    @DefleMask ปีที่แล้ว +5

    Выборка по остатку от деления довольно медленная. В большинстве реализаций используются битмаски. Хоть размеры таблиц и становятся кратны степеням двойки, зато логический and выполняется за один такт процессора, вместо шести-десяти у модуля. Также в Java стандартный HashMap уж очень прожорливый, т.к. оборачивает объекты в ноды с ссылками на предыдущий и следующий элемент. Потому для небольшого числа элементов (до 16384) лучше использовать такие вариации, где таблицы ключей и значений представлены одним массивом

    • @АдамСмит-ы7р
      @АдамСмит-ы7р ปีที่แล้ว +1

      Ну про большинство вы всё же загнули, например в libc++ (см. функцию __constrain_hash) на случай степени двойки есть ифик, но допускается произвольное значение __bc, в libstdc++ всегда просто берут остаток от деления (struct _Mod_range_hashing).
      Насчёт медленности взятия остатка от деления - можете посмотреть на библиотеку fastmod, можно немножко предподсчитать и обойтись умножением и сдвигами (правда, вышеупомянутые реализации так не делают, наверное чтобы ABI не ломать).
      А по три ссылки на объект - разве ж это по джавовым меркам прожорливый)

  • @vladimir.kravets
    @vladimir.kravets ปีที่แล้ว

    Красиво, наглядно, но есть пара нюансов:
    1. массив бакетов пересоздается не всегда, когда количество элементов достигает количества бакетов, как правило еще есть такой параметр, как load factor, то есть это управляемая история
    2. из-за того, что существует атака на хэш-таблицу тем, что в нее подкладывают элементы дающие коллизию, то в нормальных реализациях hash map есть контроль такой ситуации и в случае её возникновения, то происходит переключение со списка на дерево

  • @firsto
    @firsto ปีที่แล้ว

    Великолепная подача информации, очень наглядно.

  • @dragerjeji5279
    @dragerjeji5279 ปีที่แล้ว

    Отлично, отлично, отлично! Огромное спасибо за это видео!

  • @moments_shock
    @moments_shock ปีที่แล้ว +3

    Классно и понятно для новичков))
    Тем временем Java где HashSet использует в своей реализации HashMap 🙃

  • @Baha996
    @Baha996 ปีที่แล้ว

    Шикарный ролик! Показываю своим ученикам)

  • @billgrover3130
    @billgrover3130 ปีที่แล้ว

    Офигенная подача материала огонь🔥🔥🔥🔥

  • @РоманМатохин
    @РоманМатохин 9 หลายเดือนก่อน

    Супер объяснение! Спасибо большое!

  • @djorayevofficial5060
    @djorayevofficial5060 ปีที่แล้ว

    Саша спасибо . Видео супер , понятный и простой. Хотелось бы весь курс про Алгоритмов на таком стиле сам я данный момент пытаюсь изучать их но из-за того что у меня нету достаточного знания высшей математики как-то сложно стало понять суть алгоритмов. Был бы рад если в скором времени будете запускать курс.

  • @bysedova
    @bysedova ปีที่แล้ว

    Присоединяюсь к желающим разобраться с графами!

  • @kazarovroman
    @kazarovroman ปีที่แล้ว +1

    Супер формат!

  • @Sergey.Aleksandrovich.P-37rus
    @Sergey.Aleksandrovich.P-37rus ปีที่แล้ว

    четкое объяснение.... спасибо!стало более понятно.

  • @dmii3iy
    @dmii3iy ปีที่แล้ว

    Отличная подача материала!

  • @adammason482
    @adammason482 ปีที่แล้ว +1

    Спасибо за ролик!

  • @cathello2900
    @cathello2900 ปีที่แล้ว

    Очень круто! Надо прям все под такое поеснние переводить

  • @kl45gp
    @kl45gp ปีที่แล้ว +1

    отлично обьясняешь, спасибо! Только забыл раскрыть смысл почему это hash и почему это set