我正在实现我自己的 java 树集。我认为底层数据结构是一个 BST,树中的每个节点都包含 Object 类型的数据字段。但是,我坚持如何使用自然排序比较器比较两个 Object 类型的数据。是否有比较两个对象并返回其自然排序值的 compareTo 函数?我也在考虑使用哈希码作为每个节点的索引键,并以此为基础进行比较。但似乎不同的对象可能具有相同的哈希码。任何建议表示赞赏。
问问题
1006 次
1 回答
0
而不是 BST 考虑 RBT(红黑树)。在这里查看更多参考。
现在您的 MyTreeSet 可以采用两种对象。1. 给定包装类的 java 对象,如 String、Integer、Long 等或 2.您自己编写的自定义类的对象。
如果您的数据结构需要支持案例 1,那么可以根据 compareTo 方法轻松完成订单,该方法由所有 java 给定的包装类实现。您只需要调用 compareTo 方法就可以根据返回值 0、负值和正值知道哪个对象大于、等于或小于其他对象。
对于案例 2,这意味着您的 MyTreeSet 还需要获取自定义类的对象,然后您应该为您的自定义类实现 Comparable 接口并在那里编写您的比较算法。例如,如果您希望 MyTreeSet 应该采用 Employee 类对象,则在 Employee 类中实现 Comparable 方法,并根据 emp1 与 emp2 的比较方式编写 compareTo 方法的实现。您可能希望根据员工 ID 对它们进行排序。
希望它可以帮助你。
于 2013-10-19T06:42:41.737 回答