Реализация сортировки на основе хеш-кода, безусловно, возможна, но может не всегда обеспечивать желаемое поведение. Например, рассмотрим класс Foo
, чей метод hashCode()
определен так, чтобы всегда возвращать постоянное значение. Например:
public int hashCode() {
return 1;
}
Учитывая этот метод hashCode в тандеме с определенным компаратором, использующим этот метод, списки почти наверняка будут отсортированы неправильно, за исключением тривиальных случаев (пустой список, список из одного элемента и т. Д.).
В общем, следует помнить о контракте hashCode-equals, задокументированном в java.lang.Object.hashCode java doc. В двух словах, возможно, что коллизии hashCode могут привести к неравным объектам, что сделает неэффективными определенные им методы.