Хеш-таблица - Самая Популярная Структура Данных
ฝัง
- เผยแพร่เมื่อ 5 ก.พ. 2025
- Пройдите бесплатный курс от Яндекс Практикума - "Какую профессию в программировании выбрать": ya.cc/t/UrGOef...
Токен: LdtCKa7Ux
Разбираем как работает HashSet - структура данных, которая позволяет проверять в ней наличие любого элемента за О(1) времени.
Затем модифицируем ее так, чтобы получить хеш-таблицу, то есть структуру данных, хранящую пары ключ-значение.
Обе эти структуры данных очень популярны и используются в любом проекте. А еще на их знание очень часто задают вопросы на собеседовании, и три самых популярных из них мы также разберем в этом видео.
Создал Telegram канал, в котором рассказываю о жизни в Лондоне, работе в Google и подготовке к собеседованиям. Подписывайтесь: t.me/saschalukin
Почему в JavaScript ты используешь var???? Есть же let
Мне бы целый курс в таком стиле по всем структурам данных! 👍
кстати, да, даже платный бы купил
У Седжвика на курсере очень понятный курс
@@mtr-code аналогично. за такой курс готов заплатить!
Karpov courses. Не реклама, сам планирую туда пойти.
Да нахууй надо! Нет, то, что автор старался - это видно. Только его "объяснение" выглядит как рандомный плевок в лицо адекватности. Почему бакетов именно 5, кто должен реализовывать вычисление хэша, для чего эта вся петрушка ВООБЩЕ затеяна... Короче объяснение - лажа. Хуже - только зачитывание на вебку гугленых статей с кислой рожей. Но автор старался. Но цельного, логичного, понятного, непротиворечивого, фундаментального - не получилось...
Александр, я не знаю какой ты программист, но объясняешь очень хорошо. У тебя талант.
Я думаю, пиздатый он программист
Я вот вообще ни разу не программист, но разобрался что к чему в выходной и под пивко. Александр, у вас талант!
vidnyskuf)
Не оставляю почти никогда на ютубе комментарии, но это просто фантастическое объяснение, спасибо за проделанную работу!)
Супер! Это лучшее, наглядное и понятное объяснение, даже моя бабушка поняла.🤗
Спасибо, Александр, за ваши подробные объяснения!!!
Отличное объяснение, было бы здорово услышать про графы и их подтипы, деревья итд)
Да, присоединяюсь к остальным комментариям: очень понятное и грамотное объяснение. В продолжение этой темы можно было бы разобрать способы написания хеш-функций с равномерным распределением для разных типов данных. Это тоже нужная в данной задаче (когда сами делаем хеш-сет) фишка. Очень нравятся твои видео, спасибо и за материал, и за подачу. Хотелось бы побольше :)
6лять, почему бакетов ПЯТЬ?
Это легко. Только выбери хэш алгоритм, а затем выполни нормализацию. От типа нормализации будет зависеть как бклет расти структура при уведичении.
@@ФоксСеннабакетов может быть сколько угодно, все зависит от реализации...
@@yuriytheone так вот как раз вопрос в сравнении хеш алгоритмов
@@ФоксСенна просто решили что 5, это не константа, можешь хоть сразу 100 ебнуть
Где же ты был 3 дня назад, когда у меня это на собеседовании спрашивали...
Спасибо за крутое объяснение, не понимал эту магию, а теперь понимаю)
Программирую встраиваемые системы больше 30 лет. За это время функция хеша вообще ни разу не понадобилась...
:-)
Это одна из самых важных тем. И объяснение просто фантастическое. Браво. Лайк
Это шикарно. Спасибо огромное, помог как никто. Я и статьи читала и у учителя одного спрашивала, никто так нормально и не объяснил
Понятно и просто. Я в восторге! Буду ждать ещё подобных видео ❤
Обычно не оставляю комментариев, но здесь не могу не прокомментировать: автор молодец! Очень доступно объяснил материал
офигенный задний фон, красивое оформление + понятно и удобно, спасибо за видос!
Прикольный формат, быстро и без лишней информации!
Отличное видео, сжато и простым/ доходчивым языком!
Я порекомендовал его всем своим сокурсникам в академии, респект!!! :)
Спасибо за объяснение темы. Несколько раз вчера прочитал эту тему с примерами кода в уроке на своём обучении. Ничего не понял.
После вашего видео всё становится понятно
Ваш канал - это находка!
Редко оставляю комментарии, но ваша работа восхищает. Четко, наглядно и по существу. Спасибо!
Отличное видео. Мне как новичку в изучении java очень помогло разобраться в работе hashset и hashmap, а также понять как связаны методы hashCode() и equals() и для чего они нужны, спасибо огромное за твои уроки
Объяснение реально очень классное, как-то до этого в целом понимал эту структуру, но здесь прям все встало на свои места
Огонь!!! 🔥🔥🔥🔥🔥🔥
До этого просто использовал это и не задавался, что там под копотом и как.
А теперь с пониманием буду использовать)))
Спасибо большое за простое и понятное объяснение!!!
Саша, продалжай в том же духе, всё круто!!!
Редко пишу коммент. Но это того стоит.
Лучшее объяснение hash сетов и таблиц. ❤
Александр, отличное видео, впрочем как все Ваши ролики! Спасибо!
Огромное спасибо за популяризаторский стиль!!! Теперь поняла, наконец-то, что из себя эта хеш-таблица представляет
Редко пишу комментарии, но тут не удержался) спасибо за такой детальный, а самое главное грамотный разбор, контент усваивается легко, слушать интересно, подписался, пойду смотреть предыдущие ролики)
Формат крайне удобный и понятный. Спасибо! Стоит продолжать в этом духе.
Спасибо за Ваш труд! Кто ясно мыслит - тот ясно излагает!
Спасибо большое. Очень доступно, но с важными деталями. Прям вау.
Очень хорошо рассказал, спасибо. Будет интересно посмотреть про другие структуры данных. Trees, linked list, graphs.
Больше бы таких видео, где очень доступно и понятно
Я очень редко пишу комментарий,но Боже,какое же это крутое видео!Я много читал про хэширование и про хэш-таблицы,но ничего не помогло мне понять это ,как это видео,я буквально прозрел!Спасибо ,бро,долгих лет тебе жизни
Очень понятно! Закрепил теперь точно эту структуру данных! Спасибо
Как приятно тебя слушать, смотреть твои видео, продолжай в том же духе!
Изменено: я настаиваю, чтобы ютуб создал официальный плейлист с 1000 самых понятных видео на ютубе, и твое будет первое!!
Только прочитал в книге про хеши, так вот видос тебе. Да какой качественный и понятный
Спасибо ❤
Объяснение - мое почтение! Все понятно с первого раза)
Спасибо за твой канал ты лучше всех обьясняешь, честно говоря алгоритмов я сторонился но с твоими обьяснениями задач стало интересно и появилась вера что все возможно изучить, хочется как можно больше видео!
Это объяснение просто афигенно!
На моем курсе это объяснялось очень криво... тут сильно лучше
Спасибо за ролик! Было очень ясно и доступно объяснено! И не знал что обычный объект js такие чудеса вытворяет!!!!
Спасибо моему другу,Жаке. За ссылку на видео.Очень интересно
Хорошее и простое объяснение без математических з**бов. Спасибо большое
Большое спасибо. Отличное объяснение. Продолжай!
Очень приятная и интересная подача материала! Спасибо! Пожалуй подпишусь.
Мужик, я ни хера не понял, что ты сказал, но ты мне близок. Ты заговорил и достучался до сердца.
Спасибо, Саша!
Для меня это лучшее объяснение которое я встречл👍🏻👍🏻👍🏻
Не останавливайся пжл!
Это великолепное объяснение
Как здорово объясняешь ! Я не программист , но все поняла
коротенько и доходчиво. Спасибо за проделанную работу!
еще одна находка для меня! круто, еще с примерами на нескольких языках
Спасибо за такое понятное и подробное объяснение! Отличная работа!
Лучшее видео по хеш-таблицам.
Спасибо за видео. Было бы здорово увидеть объяснение, как работает функция hashCode() изнутри и как мы можем её переопределять.
Очень интересно и понятно рассказано! Отличная подача материала
Спасибо большое! Продолжайте в том же духе!
Крутейшее объяснение! Для меня темп был немного быстрым, в основном смотрела на скорости 0.75 :)
Ради таких видео я и плачу за интенет
Спасибо!)
Спасибо за ролик, давно смотрю ваши выпуски. Очень интересно и понятно.
Супер! ❤ спасибо! Можно вообще сделать разборы структур данных!? Например, про деревья 😅😊
Очень понятно и легко. Спасибо за детальное объяснение!
спасибо автору, легкая и главное понятная подача материала
Теперь QR код есть ;). Смотрю тебя от когда у тебя было 4 видео на канале.... keep going :)
Спасибо, только благодаря тебе и увидел!
Это база. Объяснение потрясающее
Спасибо! у тебя талант объяснять)
Великолепное объяснение! Спасибо Вам!
Спасибо! 👍Повторение-мать учения!
как раз на днях задался вопросом почему при использование хеш таблиц сложность поиска о(1), и тут твой видос! спасибо
Приятно слушать и смотреть, спасибо тебе!
Впервые на канале и удивился как понятно ты объяснил данную тему.
Спасибо за тот труд ❤
Было бы круто, если б еще к твоему плейлисту разбора задач с собеседований из бигтеха прибавился и Нетфликс, пожалуйста
Большое спасибо за пояснение, еще и на 3 языках)
Привет! Впервые зашел на твой канал, и это очень крутое объяснение хэш-таблиц! У меня будто прозрение после твоего видео, спасибо!
Очень круто объясняешь и визуально показываешь 💪
Отличный контент! Отличная подача! Ждём продолжения.
То чувство, когда автор делает видео, только что бы всё это не забыть к своей старости.
Крутой контент делаешь, спасибо)
Лучшее и понятное видео по словорям/мапам, которое я видел. Одназначно заслужил подписку и лайкос)
Вау! Отличный урок! 👍
Паря не останавливайся - эта годнота нужна, визуализация решает.
Давай такое видео по stack/queue/dequeue
Ай, как хорошо слушать и смотреть! Рад, что алгоритмы показали такое видео)
Оффтопный вопрос: а что за монитор?
Вау! Смотрю уже довольно давно и каждый раз полный восторг
Большое спасибо за "уроки", все предельно понятно и интересно изложено 👍
Было бы неплохо увидеть твой ролик про сборщик мусора, частенько спрашивают на собеседованиях )
так ничерта же не понятно! я тут в каментах один адекватный?
@@ФоксСеннаа ты не умеешь писать.
Саша, большое спасибо!
хороший материал
Коллизия - это совпадение хэшкода у двух разных объектов, а не факт попадания этих объектов в один бакет.
Соответственно и логика проверки внутри бакета двухуровневая - когда попали в бакет и бежим по элементам, то сравниваем их сначала по хэшкоду и только если они совпадают то сравниваем по equals. По крайней мере для java это так
100% true
Согласен 💯
Вроде бы автор правильно сказал, коллизия это попадание в один бакет нескольких элементов даже с разными хэшами. А проверка ключей в списке идёт, сначала по хэш коду, потом ссылки (==) и только потом 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
Если хеш-код разные то объекты разные, а если хеш-код одинаковые это значит что объекты одинаковые
материал подан просто: великолепно
Выборка по остатку от деления довольно медленная. В большинстве реализаций используются битмаски. Хоть размеры таблиц и становятся кратны степеням двойки, зато логический and выполняется за один такт процессора, вместо шести-десяти у модуля. Также в Java стандартный HashMap уж очень прожорливый, т.к. оборачивает объекты в ноды с ссылками на предыдущий и следующий элемент. Потому для небольшого числа элементов (до 16384) лучше использовать такие вариации, где таблицы ключей и значений представлены одним массивом
Ну про большинство вы всё же загнули, например в libc++ (см. функцию __constrain_hash) на случай степени двойки есть ифик, но допускается произвольное значение __bc, в libstdc++ всегда просто берут остаток от деления (struct _Mod_range_hashing).
Насчёт медленности взятия остатка от деления - можете посмотреть на библиотеку fastmod, можно немножко предподсчитать и обойтись умножением и сдвигами (правда, вышеупомянутые реализации так не делают, наверное чтобы ABI не ломать).
А по три ссылки на объект - разве ж это по джавовым меркам прожорливый)
Красиво, наглядно, но есть пара нюансов:
1. массив бакетов пересоздается не всегда, когда количество элементов достигает количества бакетов, как правило еще есть такой параметр, как load factor, то есть это управляемая история
2. из-за того, что существует атака на хэш-таблицу тем, что в нее подкладывают элементы дающие коллизию, то в нормальных реализациях hash map есть контроль такой ситуации и в случае её возникновения, то происходит переключение со списка на дерево
Великолепная подача информации, очень наглядно.
Отлично, отлично, отлично! Огромное спасибо за это видео!
Классно и понятно для новичков))
Тем временем Java где HashSet использует в своей реализации HashMap 🙃
Все так)
Шикарный ролик! Показываю своим ученикам)
Офигенная подача материала огонь🔥🔥🔥🔥
Супер объяснение! Спасибо большое!
Саша спасибо . Видео супер , понятный и простой. Хотелось бы весь курс про Алгоритмов на таком стиле сам я данный момент пытаюсь изучать их но из-за того что у меня нету достаточного знания высшей математики как-то сложно стало понять суть алгоритмов. Был бы рад если в скором времени будете запускать курс.
Присоединяюсь к желающим разобраться с графами!
Супер формат!
четкое объяснение.... спасибо!стало более понятно.
Отличная подача материала!
Спасибо за ролик!
Очень круто! Надо прям все под такое поеснние переводить
отлично обьясняешь, спасибо! Только забыл раскрыть смысл почему это hash и почему это set