Рассматривается основная идея методов hashCode() и equals(), которая (по мнению автора) должна объяснить самую суть их связи и применения.
Пікірлер: 121
@svetlanamazhaykina69186 күн бұрын
Спасибо за Ваш труд! Коммент в поддержку канала.
@ViktorVdovichenko5 жыл бұрын
Вот это уровень! Вот так знания! Спасибо ОГРОМНОЕ за информацию!
@ultradaverАй бұрын
Самое лучшее объяснение из всех
@user-zi6dm2lk5n5 жыл бұрын
Очень доходчиво объяснил, спасибо большое)
@AnnaSmirnova14 жыл бұрын
Самое крутое объяснение, которое я слышала))) Пересматриваю как готовлюсь к собеседованию
@onegin51294 жыл бұрын
Хорошо объяснили, многие любят мусолить так что понять что то не реально
@user-tg2ep1hx1r2 жыл бұрын
Единственный, кто рассказал доступно и самую суть про hashCode. Спасибо.
@gadjik_youtube Жыл бұрын
спасибо ! вот теперь стало понятно , зачем вообще это нужно ...
@alexandrmakarevich53346 жыл бұрын
Спасибо,это самое адекватное и понятное объяснение взаимосвязи equals() & hashCode(),которое регулярно спрашивают на собеседовании.Лайк и подписка!
@preenxus34255 жыл бұрын
откуда ты знаешь? 10 месяцев назад вы наверное и собеседования-то и ни разу не проходили.
@korolcreeper Жыл бұрын
@@preenxus3425 В 2022 спрашивают на джуна
@cryptobunker9972Ай бұрын
@@preenxus3425 🤡
@BernabeuBlaze2 жыл бұрын
Лучшее видео про hashcode! Автору рахмет.
@user-dr4ji1oo2z4 жыл бұрын
Без воды. Спасибо!
@Nidvoraich Жыл бұрын
Спасибо! Действительно, очень полезно
@muhammadalirasuljonov7992 жыл бұрын
Я видел много видео про equals и hashcode, но это самое понятное
@danilasar4 жыл бұрын
Простое и грамотное объяснение. Большое спасибо за Ваш труд!
@---mg7yi6 жыл бұрын
Спасибо за Ваш труд!!!
@user-jt4ol9fb2qАй бұрын
Редко пишу комменты, но здесь снимаю шляпу, спасибо!
@kirill59884 жыл бұрын
Частенько возвращаюсь к этому видео по ходу обучения, очень годно, спасибо!
@synarge2027 Жыл бұрын
Спасибо тебе огромное! Вот теперь у меня появилось полное понимание для чего нужен и как работает hashCode Лучший!
@IuliiaDalskaia4 жыл бұрын
Спасибо Вам, добрый человек!)
@Vadim_Sotnikov4 жыл бұрын
Очень хорошее объяснение, спасибо Вам большое!
@user-yo7mw6oj4p6 жыл бұрын
Спасибо. Очень информативно.
@yeson65812 жыл бұрын
Спасибо, Антон! Очень классное и понятное объяснение! И расставлены все нужные акценты на действительно важной информации.
@dariadandria41123 жыл бұрын
Прекрасное обьяснение, понятно и доходчиво, без лишней воды!
@MrSBFI6 жыл бұрын
как всегда толково, с расстановкой, по полочкам, спасибо
@Mr.GhosTMG2 жыл бұрын
Лучшее объяснение ! Для чего они и с чем их готовят! Спасибо!
@mpchest13 жыл бұрын
Автор, ты просто боженька!
@user-bs3mo9wz3h2 жыл бұрын
С меня лайк и подписка) Очень качественно,без воды)все просто,понятно,и доходчиво!)
@vladfedos55543 жыл бұрын
Огромное спасибо, очень полезная информация
@user-mh4jq8rr7i4 жыл бұрын
Такой валенок как я даже понял! Спасибо огромное!
@NeXus-zb4zh5 жыл бұрын
отличное объяснение, спасибо
@volodymyr33225 жыл бұрын
Просто бомба. Спасибо за четкое обьяснение
@hr0fft3 жыл бұрын
Отличное объяснение, спасибо!
@agentr2272 жыл бұрын
Отличное видео 👍
@user-gb3zo3kr3x7 ай бұрын
Отличное объяснение, спасибо за труд!
@Twinky0093 жыл бұрын
Спасибо огромное, все очень четко и по делу!!!!!
@97622636 жыл бұрын
супер. в закладки. спасибо!
@EasyTechnoSphere Жыл бұрын
Пять лет прошло, а ваша лекция полезна.
@java8599 Жыл бұрын
Она была полезна и 25 лет назад :)
@ivnkhl54512 жыл бұрын
у тебя талант, продолжай снимать видео , ты изменишь людей которые учат Java
@user-tg3wl8yj3i4 жыл бұрын
Коротко и по делу!!!
@user-dx9yq5js2c3 жыл бұрын
Класс! Очень хорошо объяснено.
@igorkorotkov97274 жыл бұрын
Это лучшее объяснение, спасибо огромное, наконец то понял эту связку
@java85994 жыл бұрын
Спасибо за добрые слова. Удачи.
@user-dh6dn1rq8r Жыл бұрын
Прекрасно!!!
@KirillMvS8 ай бұрын
Спасибо за структурированное объяснение!
@RomanPochenko4 жыл бұрын
Добавил в закладки, отличное видео. Спасибо!
@andreypetukhov80543 жыл бұрын
Отличное объяснение!
@ukratitelkisok97263 ай бұрын
Лучший!
@MiracleMasterpiece Жыл бұрын
Спасибо огромное за объяснение, как отметили в комментариях, у вас талант понятно рассказать тему!
@antonrv62693 жыл бұрын
Хорошее объяснение. Спасибо
@margo_lapinskaya_music4 жыл бұрын
спасибо! ОГРОМНОЕ.
@user-yu8hq6sg6i2 жыл бұрын
замечательное видео))
@mikhaillazarev53782 жыл бұрын
Очень полезная информация, нужно это пересматривать.
@Bah19184 жыл бұрын
СПАИБО ЗА УРОКИ.
@java85994 жыл бұрын
Спасибо, что смотрите.
@fck2trsh4 жыл бұрын
Отличнейший урок!
@ediego_643 жыл бұрын
Хорошее объяснение, на простом примере
@immortal-spirit-134 жыл бұрын
круто, спасибо большое ))
@pavelpaddubotski97795 жыл бұрын
хороший и понятный урок. спасибо
@katelvova57913 жыл бұрын
Спасибо!!!
@AnnaSmirnova12 жыл бұрын
Это самое мое любимое видео на канале)
@StBrother424 жыл бұрын
Вам подкасты вести нужно с таким голосом) приятно слушать
@user-bh5go5ci5i5 жыл бұрын
Спасибо!
@alexgordeeff Жыл бұрын
Огромное спасибо что ТААК разжевали, однозначно лайк и подписка!
@alekseigrin6126 Жыл бұрын
ну наконец-то человек понимающий свое дело
@leonkonig51313 жыл бұрын
Спасибо, в кой то веки просто и понятно все объяснено
@user-xl5ri7ut4t3 жыл бұрын
здорово объяснил, спасибо
@mikhailmereminskiy71554 жыл бұрын
Я уже знал об этом. Но Ваше объяснение позволило, что называется, прочувствовать. Спасибо!
@user-wl9sf6uc5p3 жыл бұрын
Супер полезно!
@elekrax5 жыл бұрын
super. 10/10
@independent32533 жыл бұрын
Супер
@markifive Жыл бұрын
Красивчик !!!
@Eliseev_Serge Жыл бұрын
Так явно эта мысль мне тоже не встречалась в других источниках.
@user-eq8ny4in9c3 жыл бұрын
спасибо!
@user-gh9ou9ki5z3 жыл бұрын
Спасибо
@user-ce3lm7sz1k4 жыл бұрын
bomba!
@igothigh2 жыл бұрын
Божечки мои. Вот что я искал два дня. Столько литературы перечитал на просторах интернета и пересмотрел видео, что уже потерял веру в то, что хоть кто-то объяснил почему именно нужно менять хешкод. Обычно все пишут/говорят "чтобы джава правильно сравнивала по хешкоду" - но эта фраза не дает понимания того, в какой момент и как это повлияет на нашу программу. На самом деле за два дня и сам смог додуматься, но мне важно, чтобы кто-то из опытных программистов это подтвердил своими словами)
@Aladinovich2 жыл бұрын
Отлично объяснил, я еще читал что есть некий контракт, который говорит что если ты переопределяешь метод equals то ты должен также переопределить hashCode ну и равносильно если переопределяешь hashCode
@user-bw7oe1se2u5 жыл бұрын
Немного запутано но если подумать ...... лайк!
@vitalieandrusca47425 жыл бұрын
Mujik !!!
@themachine93292 жыл бұрын
Хорошо рассказал, но почему не упомянул, что по умолчанию для object сравнение идёт по адресам ссылок объектов? поэтому то нам и надо переопределить equals, но ведь иногда надо сравнивать именно адреса. Переопределение hashcode необходимо когда объект будет участвовать в сравнениях где задействована эта функция, например в коллекциях - так более обще. Надо было упомянуть что Set не допускает дублирования, поэтому не добавился одинаковый элемент. Удивлен как много у тебя про Java, причём каждая тема достаточно подробно объснена - с меня подписка. Спасибо за контент.
@GuestUser-vf9qe5 жыл бұрын
Спасибо! Описанные здесь проблемы с перебором всех объектов коллекции будут очень хорошо проявляться с использованием Hibernate и прочего ORM-подобного при неправильном написании hashCode()
@vitalieandrusca47425 жыл бұрын
oigitelino!
@JeyX904 жыл бұрын
Спасибо большое! только у вас во всем чебурнэте можно найти, уроки по таким не простым темам!
@java85994 жыл бұрын
Спасибо, что заглядываете.
@jowigi48854 жыл бұрын
Хорошо что не Нурлан)
@alexandrkomar47412 жыл бұрын
здравсвуйте. пришел сюда по ссылке... еще зеленый(учусь 3 месяц). не могу понять за счёт чего активизируется метод equals... выходит потому что мы просим вывести количество объектов из arraylist Set и он сразу смотрит автоматически hashcode, а потом уже если нашлись оба одинаковые hashcode активизирует метод equals?
@java85992 жыл бұрын
Когда мы добавялем что-то в коллекцию, которая работает через хэш-код, сама коллекция спрашивает у добавляемого обхекта hashCode. Еще раз - мы добавляем в коллекцию методом add, а сама коллекция вызывает методы hashCode и equals у нашего объекта. Удачи :)
@alexandrkomar47412 жыл бұрын
@@java8599 спасибо. Понял
@emirlanabdullaev8864 Жыл бұрын
как вернуть из переопределённого hashCode -> double к примеру 12.005
@java8599 Жыл бұрын
Никак. Только целое число. И если подумать, то это правильно.
@emirlanabdullaev8864 Жыл бұрын
@@java8599 в задачке из степика есть в ТЗ вернуть из переопределенного метода хешкод переменную re из вызываемого объекта, Хз как правильно нужно было решать но я вернул return Double.hashCode(re) ; Ещё допишу если есть ошибка
@java8599 Жыл бұрын
@@emirlanabdullaev8864 Выглядит вполне досттойно. Если тип re Double, то наверно можно re.hashCode(). Если же тип элементаррный double, то вообще хорошо смотрится.
@emirlanabdullaev8864 Жыл бұрын
@@java8599 👍 да второе
@user-gl2bt1on5p2 жыл бұрын
Где ? Что за ситуация где "придется" сравнить два объекта ?👀
@java85992 жыл бұрын
Посмотрите еще раз. С 12 минуты это проговаривается достаточно подробно. Но может вам нужны другие слова, другое объяснение - люди разные. Удачи.
@GusLapchatiy3 жыл бұрын
А что если переданный объект не является MyClass? Сначала нужно проверить на то, что объект является инстанцией нужного класса, а потом проверять на равенство полей. В противном случае, метод может выкидывать ClassCastException, что будет нарушать принцип подстановки Барбары Лисков.
@java85993 жыл бұрын
В принципе согласен в Вашими доводами. Просто хотелось сконцентрироваться на главной идее.
@GusLapchatiy3 жыл бұрын
@@java8599 Да, но не в ущерб остальным базовым принципам и понятиям, особенно SOLID
@java85993 жыл бұрын
@@GusLapchatiy Ну тут каждый решает сам - всегда нужно чуство меры. Иначе из-за леса деревьев не будет видно.
@GusLapchatiy3 жыл бұрын
@@java8599 не согласен - все должно быть по правилам, а то кто-то переопределит hashcode и скажет: "Ну, пожалуй и хватит, пора и меру знать". И оставит реализацию equals() без изменений. Нет такого понятия - мера. Если что-то нужно знать и использовать, то это нужно знать и потом использовать, без оглядки на то кому чего будет где видно.
@java85993 жыл бұрын
@@GusLapchatiy Ну это Ваша точка зрения. У меня другая. И что ?
@HowItWorks5 жыл бұрын
Вот этот ваш лонг в конструкторе как песком по глазам. Зачем принимать лонг, потом преобразовывать его к инту в хэшкоде? Почему не сказано, что это относится к работе коллекций в основе которых лежит хэш таблица? Почему "проверки" не сделаны в тестовых классах, а в мэин навалом? Ну и куча какой то воды, не раскрывающей суть работы хэш таблицы. Не рассказано про бакеты, индексы, коллизии и связанные списки, про лоад фактор. Важность хэшкода проявляется когда понимаешь как работает хэш таблица. А из этого виде как то не очень понятно. 19:55 Хэшкод не сужает ничего. По хэшкоду расчитывается индекс бакета в который попадает обьект, а в нем уже идет поиск по иквелсу если там уже есть обьекты. И эти обьекты там хранятся в виде связанного списка, что в свою очередь затратно для поиска. Вот и все.
@java85995 жыл бұрын
Вы рассказываете про реализацию HashMap, но не путайте контракт между equals и hashCode как идею и ее конкретное воплощение в HashMap. Кто Вам сказал, что только HashMap имеет исключительные права на использование этого контракта ?
@java85995 жыл бұрын
А по поводу Long в конструкторе - в базе данных у Вас так мало записей, что Вы можете себе позволить делать идентификатор в виде Integer ?
@HowItWorks5 жыл бұрын
@@java8599 причем тут HashMap? Это всего лишь одна из реализаций коллекции использующая хэш таблицу. А писал я именно про хэш таблицы. Читайте внимательней что я пишу и не перекручивайте.
@HowItWorks5 жыл бұрын
@@java8599 по поводу БД. Не мешайте всё в кучу. У вас тут идет разговор про переопределение public int hashCode() для джавовских обджектов. А он возвращает инт как не крути и независимо от того, сколько у вас обьектов в БД и вообще сколько обьектов вы способны нагенерировать. И это напрямую относится к контракту меду хэшкодом и иквелсом. А именно это отднонаправленный контракт. Если a.equals(b)==true, то a.hashCode()==b.hashCode(), но не наоборот. Если a.hashCode()==b.hashCode(), то не обязательно a.equals(b)==true. В этом ключ к пониманию этого контракта. :) переписывал пару раз, что бы было боле наглядно.. чуть сам не запутался.
@java85995 жыл бұрын
Вы другими словами сказали то же, что и я. Просто я концентрировался на контракте, как идее - НЕравенство хэшкодов однозначно говорит о том, что объекты НЕ равны. Как это использовать - личное дело каждого.