2013-10-19 96 views
0

我正在实现我自己的java treeset。我认为底层的数据结构是BST,树中的每个节点都包含对象类型数据字段。然而,我坚持如何使用自然排序比较器来比较两个对象类型数据。是否有compareTo函数比较两个对象并返回其自然排序的值?我也在考虑使用散列码作为每个节点的索引键,并根据它进行比较。但似乎不同的对象可能具有相同的哈希码。任何建议表示赞赏。在java中实现我自己的treeset

+1

现有代码的一个示例会很有帮助。 – voidHead

回答

0

而不是BST考虑RBT(红黑树)。请参阅here以获取更多参考。

现在你的MyTreeSet可以接受两种对象。 1.给定的包装类如String,Integer,Long等的对象或 2.您自己编写的自定义类的对象。

如果你的数据结构,需要支持的情况下1一个再下订单可以根据compareTo方法由下式给出包装类的所有Java实现轻松完成。你只需要调用compareTo方法来根据它的返回值0,负值和正值来知道哪个对象更大,等于或小于其他对象。

对于情况2,这意味着您的MyTreeSet需要采用自定义类的对象,那么您应该为自定义类实现Comparable接口并在其中编写比较算法。例如,如果您希望MyTreeSet应该采用Employee类对象,然后在Employee类中实现Comparable方法,并根据emp1如何与emp2进行比较来编写compareTo方法的实现。您可能希望根据其员工ID进行排序。

希望它可以帮助你。