2016-10-16 1 views
1

Что быстрее для сравнения объекта в Скале:Что быстрее для сравнения случай объекта класса в Скале: а) метод равно (==) или б) Приравнивая значения хэш

а) сравнения двух объектов случай класса, используя equals (==) или

b) создание хэша из переменных-членов объекта, а затем сравнение этого хэша.

Я думаю, что метод equals должен быть быстрее, но мой друг утверждает, создаем ли строку значений переменных-членов и генерируем его хэш и сравниваем его, это будет быстрее, поскольку оно будет выполнять одно сравнение вместо n сравнения, которое оно делает в равных метод. n - число переменных.

+0

'==' сравнивает ссылки, да? Разве это недостаточно для хэшей? Генерирование строки из N переменных, тогда вычисление его хэша можно утверждать более сложным по сравнению с N булевыми сравнениями –

+0

@ cricket_007 в Scala, == используется для проверки равенства значений, а не ссылочного равенства. – fxlae

+0

@JFo Просто для классов классов, правда, правильно? –

ответ

2

Эти две строки имеют один и тот же хэш-код:

"G9tX" 
"FZ79" 
hashcode: 2173622 

Таким образом, вы должны использовать equals для сравнения объекта. В случае строки, если hashcode обналичен, вы можете сначала сравнить их. В этом случае, если хэш-коды не равны, вы можете быть на 100% уверены, что строка не равна.

Смежные вопросы