Создаем свой hashCode

  • 11
  • Недоступна
Напиши свою реализацию hashCode, используя переменные model и year. Если эти поля у двух объектов одинаковые, то должен возвращаться одинаковый hashCode. Если правильно реализовать метод hashCode, вывод должен быть таким: true true true true false false
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (96)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Василий Чи
Уровень 19
24 ноября, 16:44
Основная идея переопределения hashCode в том, чтобы сравнить (точнее, вернуть (return) для дальнейшего сравнения через ==) какие-либо числовые данные объекта. Например, год, длина строки или набор байт или что угодно ещё. Чем уникальнее будут эти числовые данные, тем точнее будет отсев. Смысл метода в том, чтобы определить, какие объекты точно разные, а какие похожи (ещё не обязательно равны) и их имеет смысл сравнивать дальше (другим методом). Например:
@Override
    public int hashCode(){
        return this.model.length();
    }
18 ноября, 20:55
Я просто посчитал суммы символов в модели + год:
public  int hashCode(){
    int result =this.year;
    for (int i = 0; i < this.model.length(); i++) {
        result=result+this.model.charAt(i);
    }
    return result;
}
18 ноября, 16:27
Эта статья поможет вам в выполнении задания. https://javarush.com/groups/posts/2179-metodih-equals--hashcode-praktika-ispoljhzovanija
Станислав
Уровень 12
5 ноября, 06:54
Да что бы вам так ипотеку считали как вы объясняете материал, давая задания из неизвестных функции и называя эт учебой.
Dregid
Уровень 37
11 ноября, 07:24
Учеба, это когда ты сам пытаешься понять что от тебя хотят. Ты начинаешь гуглить, что от тебя требуется и узнаешь что то новое, попутно прокачивая скилл гуглинга. И еще, огромной подсказкой будет для тебя открытие импортированных классов, там и будет подсказка (правда в следующих квестах такой роскоши лишат)
Anonymous #3183325
Уровень 16
2 ноября, 13:20
Прокатило с model.hashCode() + year, хоть это и слабей чем с Object.hash()
Trubovich_Stanislav
Уровень 16
8 ноября, 10:26
Аналогично @Override public int hashCode(){ int result = model==null ? 0: model.hashCode(); result += year; return result;
AlekseiSieger
Уровень 14
29 октября, 13:59
Правая кнопка мыши => generate equals and hashcode =>next=> next=>задача решена. В ИДЕЕ это работает так и вручную никто никогда не пишет.
18 ноября, 16:26
Лучший!!! вот такие коментарии делают мир ЛУЧШЕ!!! очень крутая фича
fon everek
Уровень 12
22 октября, 19:35
Как же у всех горит с подачи материала. В самом начале сказали, что материал выдается не как в вузе, другая совсем система. Нет, все равно все хотят сначала теорию, потом закрепление ( +-копирование примеров и шаблонные решения). Да, в этой задаче не сказали ничего про Objects.hash, но и без него можно спокойно решить, применив текущие знания. Я решил с массивом char, где плюсовал все численные значения букв, потом прибавил год. И все. После этого посмотрел на правильное решение, узнал об этом методе, и в следующий раз уже вспомню точно про него.
Simple
Уровень 24
2 октября, 15:29
Maria
Уровень 35
27 сентября, 08:45
Приучают гуглить)))
JaVadim
Уровень 15
16 сентября, 07:50
С первой попытки только потому что еще до изучения вопроса на этой странице наткнулся на лекцию по hashCode() также на ДжаваРаш, но куда более развернутую https://javarush.com/groups/posts/2179-metodih-equals--hashcode-praktika-ispoljhzovanija Почему здесь нельзя было привести эту информацию, непонятно.