有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

用Java实现Comparator类

我是java新手。在实现以下代码时,我没有理解一件事:

public class Demo 
{
class DemoComparator implements Comparator<Board>
{
    @Override
    public int compare(Board A, Board B) { 
        return A.f()-B.f();
    }
PriorityQueue<Board>Q = new PriorityQueue<>(10, new DemoComparator());

}

这里,Board是一个我没有展示的类,f()是一个返回整数值的函数。我的问题是,如果我写:

Q.add(element1);
Q.add(element2);
Q.add(element3);

其中,element1、element2和element3为Board类型,并具有各自的f()函数返回的f值

element1、element2和element3是否会根据其f值存储在优先级队列中,并考虑任何递增或递减顺序?当行:返回A.f()-B.f()将被调用吗


共 (2) 个答案

  1. # 2 楼答案

    如果f值本身是Comparable,则可能需要使用

    return A.f().compareTo(B.f());
    

    这将确保您的数据按f的自然顺序排序,否则您可以像在提供的示例中那样自己定义比较器功能