我刚刚通过了this article,提出了各种泛型技术。Java:我应该在实现各种树结构时使用泛型吗?
作者决定使用下列内容:
public class BinarySearchTree<T extends Comparable<? super T>> {
而且我不明白这一点。为什么作者决定使用private Entry<T> root;
而不只是private Comparable root
?
通用树节点带来的特殊优势是否实现了Comparable接口?我是否需要比在二进制搜索树,AVL树,Splay树,红黑树等结构中比较2个元素更多?
@SB您对Comparable进行了部分回答,现在对泛型有何看法?看到我对Kel的文章的评论;) – Xorty 2010-10-22 19:34:30
您不必使用泛型,但它是维护树中类型安全性和对象一致性的好方法。您始终可以使用返回Object的标准Node类,但如果您希望Tree可以跨不同对象重用,则泛型非常棒。有一个原因是Collections API在推出时转用了泛型 - 它们增加了安全性,并帮助开发人员更多地了解他们可以做什么以及不能做什么。 – 2010-10-22 19:37:42
那么我没有考虑使用Object作为节点的数据持有者:)我想使用Comparable来代替:)所以node有:data(Comparable),leftson(Node),rightson(Node) – Xorty 2010-10-22 19:39:19