Я пытаюсь реализовать собственное сортированное двоичное дерево в java, и у меня были некоторые проблемы с сравнениями. Я пытаюсь реализовать родовое дерево, так что я хотел бы сделать что-то вроде:Сравнение переменных класса Object
public boolean contains(int i){
if(i == currentNode.value)
return true;
else if (i > currentNode.value)
// Go right
else if (i < currentNode.value)
// Go left
...
}
Но я использую объекты (и я предполагаю, что они являются объектами, которые можно сравнить), так что я хотел чтобы сделать что-то вроде:
public boolean contains(Object o){
if(o == currentNode.value) // value is of Object class
return true;
else if (o > currentNode.value) // Problem
// Go right
...
}
так что моя проблема сейчас в том, что это не представляется возможным использовать операторы> и < с объектами, и до сих пор я не смог придумать другой способ пойти об этом.
Вы можете использовать Сопоставимые для объектов, которые поддерживают его, и использовать значение System.identityHashCode для сравнения объектов, которые не , Конечно, есть некоторые (относительно небольшие) шансы столкновения с хеш-кодами, поэтому вы, вероятно, захотите сначала сравнить имена классов, «истощить» хэш-пространство, а затем иметь стратегию «пунта», если вы все равно получите столкновение. –