2

我有一个带有签名的类 PriorityList

树<Key extends Comparable<Key>, Value>
(这是给定的,我无法修改)。元素Tree以某种顺序插入,给定键(即它考虑键的compareTo方法)。

假设我有Tree<Integer, Integer>. 整数的默认compareTo值考虑升序。如果我愿意,我希望能够以某种方式Tree按降序插入元素。我知道我可能可以编写另一个MyInteger实现Comparable并拥有compareTo自己的类。

但是还有其他方法吗?我真正想要的是能够以某种方式告诉Tree如何对值进行排序。

第二个问题:如果我能够修改Tree,如何将比较器作为参数传递?(牢记泛型类型语法)。

4

2 回答 2

2

您已经命名了两种方法:传入比较器或让键可比较。如果该类不允许您传入自己的比较器,那么您将被困在使用键或使用 Comparable 接口创建自己的子类

替代代码看起来像这样。

public class Tree<K,V>{
   public Tree( Comparator<K> cmp ) {...}

}
于 2013-03-15T23:10:18.460 回答
0

您不需要为反向创建一个新类。您可以使用Collections.reverseOrder()来获得Comparator与给定相反的结果。

至于第二个问题,您只需在树中添加一个 setter。类似于: setComparator(Comparator<Key> c)然后使用该比较器进行Tree.

于 2013-03-15T23:18:14.343 回答