gpt4 book ai didi

java - 在 Java 中实现 Comparator 类

转载 作者:行者123 更新时间:2023-11-30 06:10:06 27 4
gpt4 key购买 nike

我是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 值考虑任何递增或递减顺序存储在优先级队列中?什么时候调用:return A.f()-B.f();

最佳答案

是的,元素将由您传递给构造函数的比较器排序。来自文档:

https://docs.oracle.com/javase/7/docs/api/java/util/PriorityQueue.html

队列的头部是具有最低值的项目。比较器将在构造函数上调用,或者当您从集合接口(interface)调用 add() 或从队列接口(interface)调用 offer() 方法时调用。直接看源码:

http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/PriorityQueue.java#267

或者编写一个小测试来证明它正在发生。

关于java - 在 Java 中实现 Comparator 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36433900/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com