Я только что пришел this article, которые предлагают различные приемы с дженериками.Java: Должен ли я выступать за генерики при реализации различных древовидных структур?
Автор решил использовать следующее:
public class BinarySearchTree<T extends Comparable<? super T>> {
И я не понимаю. Почему автор решил использовать private Entry<T> root;
, а не только private Comparable root
?
Какое конкретное преимущество может привести к созданию универсального узла дерева с помощью реализованного сопоставимого интерфейса? Мне нужно знать больше, чем сравнивать 2 элемента в таких структурах, как двоичное дерево поиска, дерево AVL, дерево Splay, дерево Red-Black и т. Д.?
@SB Вы частично ответили на вопрос о Comparable, а как насчет дженериков? См. Мои комментарии к сообщению Kel;) – Xorty
Вам не нужно использовать Generics, но это хороший способ поддерживать безопасность типов и согласованность объектов в дереве. Вы всегда можете использовать стандартный класс Node, который возвращает Object, но если вы хотите, чтобы ваше дерево было многократно использовано для разных объектов, Generics отличные. Есть причина, по которой API коллекций перешел на использование Generics при введении - они добавляют безопасность и помогают разработчикам понять немного больше о том, что они могут и не могут сделать с классом. –
Ну, я не думал об использовании Object в качестве держателя данных для узла :) Я думал об использовании Comparable вместо этого :) Итак, узел имеет: данные (сравнимые), leftson (Node), rightson (Node) – Xorty