Прошу подсказать
Почему объекты созданные с одинаковыми параметрами имеют разных хэш коды, это из-за адресов где они лежат в памяти?
У меня все хэш коды объектов разные, даже объекты созданные с одинаковыми параметрами отличаются первой цифрой. Значит по equals они были бы равны, но метод hashCode их отбракует сразу как разные.
System.out.println(lamborghini.hashCode()); 1480010240
System.out.println(lamborghini1.hashCode()); 81628611
System.out.println(ferrari.hashCode()); 1989780873
System.out.println(ferrari1.hashCode()); 1828972342
System.out.println(bugatti.hashCode()); 1452126962
System.out.println(bugatti1.hashCode()); 931919113
Я еще понимаю ferrari дальше передать в equals, но остальные по идее сразу отлетают.... кому не в лом напишите плз пару слов. спасибо
public int hashCode (Object a) {
int result = a.hashCode();
return result;
}
package com.javarush.task.pro.task10.task1011;
import java.util.Objects;
/*
Создаем свой hashCode
*/
public class Car {
private String model;
private int year;
public Car(String model, int year) {
this.model = model;
this.year = year;
}
//напишите тут ваш код
public static void main(String[] args) {
var lamborghini = new Car("Lamborghini", 2020);
var lamborghini1 = new Car("Lamborghini", 2020);
var ferrari = new Car("Ferrari", 2020);
var ferrari1 = new Car("Ferrari", 2020);
var bugatti = new Car("Bugatti", 2020);
var bugatti1 = new Car("Bugatti", 2020);
System.out.println(ferrari.hashCode() == ferrari.hashCode());
System.out.println(lamborghini.hashCode() == lamborghini1.hashCode());
System.out.println(ferrari.hashCode() == ferrari1.hashCode());
System.out.println(bugatti.hashCode() == bugatti1.hashCode());
System.out.println(bugatti.hashCode() == lamborghini.hashCode());
System.out.println(lamborghini.hashCode() == ferrari.hashCode());
}
}