Урок 14 - Методы equals и hashCode (прокачанная Java)
Вставка
- Опубліковано 6 лют 2025
- Java для прокачанных: equals hashcode
Разъяснение тем любой сложности доступным языком на простых примерах
Автор курса: Заур Трегулов (zaurtregulov@gmail.com)
Скидка на курс "JAVA - получи Чёрный Пояс!"
STEPIK:
stepik.org/a/1...
UDEMY:
www.udemy.com/...
**************************************************************************************************
Вы также можете по СКИДОЧНОЙ ЦЕНЕ приобрести готовый набор моих курсов по JAVA:
stepik.org/a/2...
или набор курсов, необходимый для JAVA ДЖУНА:
stepik.org/a/2...
Очень хорошие уроки! На ютубе мало понятной информации на доступном для новичков языке о коллекциях. Ваши уроки сильно помогают при изучении этой обширной темы) Спасибо!
Это просто божественное объяснение. На многие вопросы получил ответ. Спасибо Вам!
Очень качественная подача, просто невероятно легко заходит, спасибо)
Лучший преподаватель! Спасибо!
Качественный материал, "ни дать, ни взять", "ни прибавить, ни убавить". Спасибо.
Спасибо! У тебя шикарный русский! Лучше чем у многих русских)))
Заур, спасибо вам большое за курсы!!!!
Спасибо generate override методы с помощью IntelliJ!! Какая классная штука!👍
Благодарю Заур)
все понятно. спасибо
18:00 Если я не ошибаюсь, дефолтная реализация hashcode() в обджекте при выполнении(если его не переопределить), выдает хешкод места занаятого на локальной памяти, то есть очень паршывый хеш, на разных пк будет разным.
В лекции есть информация обратная этому утверждению?
@@programaniya нет, вроде как просто недосказанность.
Если что курс и лекции просто великолепны, надеюсь в будущем куплю у вас курс на юдемм просто чтобы отблагодарить
вернее сказать, не от разных пк зависит, а от внутреннего состояния jvm, так как она МОЖЕТ по-разному распределять объекты в памяти (например при переустановке, на одном пк, ос значения также могут отличаться или даже от того, какие программы работают в данный момент на пк). а дефолтный hashcode(), которые определен в object не учитывает содержимое объекта, поэтому нужно переопределять его
Очень полезно!
Заур, прокаченная Java - пока лучший курс, который мне встречался. Только хотел купить, но udemy теперь не принимает платежи. Есть ли идеи, на какой платформе еще вы можете разместить свои курсы?
Рад, что курс Вам понравился. Пока не нашёл русской платформы наподобие Udemy. Если есть идеи, буду рад выслушать.
Здравствуйте.
Как и обещал, сообщаю Вам о размещении моих курсов на замечательной платформе, где Вы сможете их приобрести. Вот, что необходимо сделать:
1) Пройти простейшую регистрацию на платформе stepik.org (нужно просто указать Ваш e-mail и придумать пароль);
2) Перейти по ссылке того курса, который Вас интересует, и совершить оплату;
3) Наслаждаться курсом :)
Ссылки на мои курсы:
1) Java (Джава) для начинающих: с нуля до сертификата Oracle - stepik.org/z/115662
2) SQL для начинающих: с нуля до сертификата Oracle - stepik.org/z/115617
3) Java - получи Чёрный Пояс! - stepik.org/z/115517
4) Spring для начинающих - stepik.org/z/115372
Удачного обучения!
Спасибо! Обязательно куплю на выходных.
@@programaniya купил "черный пояс". Спринг и SQL тоже планирую позже.
Попробуй ctrl+d вместо ctrl+c ctrl+v
Ничего нового не узнаю, просто освежаю память)
Уроки по sql и spring на udemy отлично продуманы
Спасибо за уроки
Спасибо! Рад, что вы заценили.
Вопрос для корректной работы нужно переопределять методы equals hashcode. Только если в паре в место значения постановляется созданный программистом класс или еще что то ?
Я думаю, вам лучше посмотреть мои уроки про HashMap. Тогда вы сами ответите на ваш вопрос.
У меня почему то когда equals переопределяю, все равно выдает фолс при сравнении двух одинаковых объектов
Значит, скорее всего, неверно переопределяете.
А можно сказать в каком видео курса для начинающих вы рассказываете про equals?
Возможно такого урока нет в плейлисте, он может быть в полном курсе.
Замечу, что сейчас, не знаю, может версия java влияет более новая, но у меня при сравнении без определенного hashCode все равно выводит true при разных студентах
Предоставьте, пожалуйста, ваш код.
ты скорее всего в самом начале hashCode не закомментировал, из-за этого у тебя выдается true
А что если мы собираем всех студентов по России и например у нас есть Ivan Ivanov курс 3 и есть такой же Ivan Ivanov курс 3 где-нибудь в другом месте и по идее у нас хэш-код и будет формироваться разный, но equals будет возвращать true, тогда получается мы не будем соблюдать правило. Или вообще такая ситуация: что если hashcode как-то так сгенерируется, что они совпадут и тогда и equals пройдёт, тогда эти два студента схлопнутся воедино? Что насчёт таких ситуаций?
Если у вас при equals = true хэш-коды различаются, значит у вас неверно переопределены эти методы.
🧠
В каком уроке Java Для начинающих была тема про переопределение метода equals()?
Возможно, она есть только в полноценном курсе, точно не скажу.
Только что же показали реализацию
а ключи не должные быть immutable? или можно использовать изменяемые объекты?
Должны? - Нет.
Было бы лучше, если бы были immutable? - Несомненно!
Подскажите, пожалуйста, почему на 13-ой минуте, когда мы для двух объектов с одинаковой длинной строк умножаем 4*7 + 8*11 + 1*53 получаем разный hashcode, если результат математических действий должен быть одинаков и равняться 169-и.
У объектов st1 и st5 длины фамилий разные, и курсы тоже разные.
@@programaniya Спасибо. Был невнимателен)
Да блин, кто-то зомбирует людей, вдалбливая, что их надо переопределять? Нафига? Ну понадобится, переопределю. Чё за мэйнстрим
Есть best practice, который принято соблюдать.
Отличная шутка, реально 😁