В общем случае ты вообще не знаешь, была ли коллизия или нет. Ты знаешь, что объект попал в тот же самый бакет. А дальше equals тебе не нужен только в единственном случае: когда этот бакет пуст.
Да, коллизия идёт по бакету, который вычисляется на основании hashcode, этот момент я тут упростил. Но суть остаётся - даже в случае одинаковых hashcode ничего страшного не произойдет - они определятся в один бакет и там уже разруливаем на основании equals.