Java сравнивая универсальные типы
В Java я написал класс Binary Search Tree, который добавляет узлы с помощью рекурсии. Теперь я хочу обобщить это, используя Generics, чтобы я мог узнать о них больше.
public class GBinNode {
T item;
GBinNode left;
GBinNode right;
public GBinNode(T newItem) {
item = newItem;
left = null;
right = null;
}
public GBinNode(T it, GBinNode le, GBinNode ri) {
item = it;
left = le;
right = ri;
}
public String toString() {
return item.toString()+" ";
}
}
Моя функция для добавления узлов находится в следующем классе
public class GBinTree {
GBinNode add(T item, GBinNode bn) {
if (bn==null) {
return new GBinNode(item, null, null);
}
if (item < bn.item) { // ERROR HERE
bn.left = add( item, bn.left);
}
else {
bn.right = add( item, bn.right);
}
return bn;
}
public void toString(GBinNode root) {
GBinNode curr = root;
if (curr == null)
return;
else {
toString(curr.left);
System.out.println(curr.toString()); // inorder traversal
toString(curr.right);
}
}
Основной класс имеет следующий код для запуска. Я'Я использую строки, но тип данных может быть сложным.
GBinTree bt = new GBinTree();
GBinNode root = null;
root = bt.add("Calex", root);
root = bt.add("Ealex", root);
root = bt.add("Balex", root);
root = bt.add("Dalex", root);
bt.toString(root);
Я начал использовать интерфейс Comparable, но как мне написать функцию CompareTo ()? Я нене знаю, какой тип T будет? Я получил ошибку "Оператор < не определено для типа аргумента (ов) T, T ".
В поисках решения один ответ былСравнение универсальных типов Java:
class Element
Я нене понимаю, куда это должно идти и какотличается от класса, реализующего Comparable. Единственное место, где я знаю тип, находится в главном классе, так должно ли быть здесь сравнениеTo ()? Я смотрел на то, как сделать GBinTree интерфейсом, но запутался, правильно ли это? Любая помощь будет оценена.