【发布时间】:2012-02-14 00:48:38
【问题描述】:
我创建了一个名为 Foo 的类。 Foo 有三个字段,它们都是整数:x、y 和 z。我想制作一个PriorityQueue<Foo>,它在不同情况下对 Foo 对象的优先级不同。例如,我可能想按 x 值、y 值或 z 进行优先级排序。但是直到运行时我才知道要优先考虑哪个值。我听说您可以使用比较器以某种方式即时强加排序,我认为这在这里会很完美。
不过,我对我将如何做到这一点感到困惑。如果说我想使用比较器优先考虑 x (而不必覆盖我的 Foo 类中的 compareTo 函数),有人可以给我看一个例子吗?
非常感谢。
【问题讨论】:
-
这是一个很好的开始方式:stackoverflow.com/questions/683041/…
-
你不必重写任何东西,但你的 Foo 类必须实现Comparator interface。只需添加 compare(a,b) 方法,如果 a b 返回一个大于零的 int。
标签: java comparator