gpt4 book ai didi

java - 比较器中的 FIFO 决胜局?

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

对于家庭作业,我需要根据启发式比较节点,以便我可以将它们放入 TreeSet 中。但是,当两个节点的启发值相等时,我需要一些方法来打破平局。

我不允许修改提供的 Node 类,据我所知,Node 没有任何其他值/属性可以帮助我打破我尚未使用的关系。 (我们正在处理谜题,这并不重要。)有没有什么方法可以根据我将它们添加到我的 TreeSet 的时间来打破平局?我只是不知道该怎么做....

我在优先级阻塞队列的文档中看到了一个示例,但我想使用比较器接口(interface),但我无法让它工作。

提前致谢;非常感谢任何提示/提示。

最佳答案

是否允许为节点创建包装器?

public class NodeWrapper implements Comparable<NodeWrapper> {
private static AtomicLong serialNumGenerator = new AtomicLong(0L);

private final Node node;
private final long serialNum;

public NodeWrapper(Node node) {
this.node = node;
this.serialNum = serialNumGenerator.getAndIncrement();
}

@Override
public int compareTo(NodeWrapper other) {
int compare = this.node.compareTo(other.node);
if (compare == 0) {
compare = (this.serialNum < other.serialNum)
? -1
: ((this.serialNum > other.serialNum) ? 1 : 0);
}
return compare;
}
// implement other methods including equals() and hashCode()
}

关于java - 比较器中的 FIFO 决胜局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7735480/

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