在java中实现我自己的treeset

时间:2013-10-19 06:18:44

标签: java treeset

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

1 个答案:

答案 0 :(得分:0)

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

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

如果您的数据结构需要支持案例1,则可以基于compareTo方法轻松完成订单,该方法由所有Java给定的包装类实现。您只需要调用compareTo方法,根据它的返回值0,负值和正值,知道哪个对象比其他对象更大,更小或更小。

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

希望它对你有所帮助。