Вы, вероятно, должны вызвать исключение, если оно дойдет до этой последней строки return 0
- когда происходит коллизия хешей. У меня, правда, есть вопрос: вы делаете полное упорядочивание хешей, что, я думаю, хорошо, но не следует ли передать ему некоторую функцию для определения лексикографического порядка?
int h1 = System.identityHashCode(o1);
int h2 = System.identityHashCode(o2);
if (h1 != h2) {
return h1 < h2 ? -1 : 1;
}
Я могу представить, что у вас есть объекты в виде кортежа из двух целых чисел, которые образуют действительное число. Но вы не получите правильный порядок, так как вы берете только хеш объекта. Это все зависит от вас, если вы имели в виду хеширование, но для меня это не имеет особого смысла.