То, что, кажется, вызывает ваше замешательство, это две вещи:
1.Сравнение значений хеша (часто очень) быстрее, чем прямое сравнение ключей.
2.В операторе == второе условие не будет проверяться, если первое ложно.
Итак, сначала сравниваются значения хеш-функции, что быстро:
Когда они не равны, вы знаете, что ключи также не равны, и вы сделали.
Когда они равны, вы не знаете, если ключитакже равны, поэтому вы должны сравнивать ключи, что (относительно) медленно.
Поскольку большинство ключей не равны, большую часть времени вы сравниваете только хэши.Только когда ключи равны (или когда хэши равны из-за коллизий хэшей), вы сравниваете ключи, что редко, и, таким образом, вы получаете выигрыш в производительности.