как понять эту строчку
result = 31 * result + year; (про 31 знаю)
Serafima Tatchenkova
11 уровень
плз
Обсуждается
Комментарии (6)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
НикитаExpert
25 августа 2021, 14:59
видимо эта строчка находится в цикле. Значит что каждый раз новое значение result равен пердыщуему значению result умноженному на 31 плюс значение переменной year
0
Галкин Юрий
25 августа 2021, 15:39полезный
Да не, это строчка явно из получения hash. 17, 31 и некоторые другие большие простые числа используются как относительно дешевый способ получения множества значений более менее равномерно распределённых значений, которые редко для двух разных входных значений дают одинаковый результат.
+1
Галкин Юрий
25 августа 2021, 15:40
Ну вот больше можно прочитать
0
Serafima Tatchenkova
25 августа 2021, 18:23
public class Car {
private String model;
private int year;
public Car(String model, int year) {
this.model = model;
this.year = year;
}
@Override
public int hashCode () {
int result = model == null ? 0 : model.hashCode();
result = 31 * result + year;
return result;
}
0
Serafima Tatchenkova
25 августа 2021, 18:24
да, про 31 я знаю. но мне непонятно почему именно
result = 31 * result + year;
что это дословно значит? мне нужно это представить в голове, а я не могу
0
Галкин Юрий
25 августа 2021, 18:36
Дословно -- это число int. Число -- математический объект. Принято записывать такие объекты в памяти компьютера некоторым образом в битах...
Почему так получено? Или в чём именно вопрос?
0