gpt4 book ai didi

java - java中如何利用类的字段实现优先级队列

转载 作者:行者123 更新时间:2023-11-30 08:07:20 25 4
gpt4 key购买 nike

我有一个名为MeterReading的java类,它有两个字段String MeterNameint MeterLevel

现在,如果MeterLevel在0到3之间,则为低,在3到6之间时,为中,从6以上为高。我如何将该类 MeterReading 传递到优先级队列?这可能吗?

最佳答案

您必须实现类的Comparable接口(interface)。诀窍是添加一个方法来获取 compareTo 方法中使用的 levelClass(LOW、MEDIUM、HIGH)。

public class MeterReading implements Comparable {
public static final int LOW = 0;
public static final int MEDIUM = 1;
public static final int HIGH = 2;

private String name;
private double level;

... // Constructor, getter setter and business logic methods

public int getLevelClass() {
if (level < 3) {
return LOW;
} else if (level < 6) {
return MEDIUM;
} else {
return HIGH;
}
}

public int compareTo(MeterReading m2) {
return getLevelClass() - m2.getLevelClass();
}
}

如果您需要相反的优先级,则 compareTo 的实现也可以如下所示。

public int compareTo(MeterReading m2) {
return m2.getLevelClass() - getLevelClass();
}

要将 MeterReading 添加到 PriorityQueue 只需将其添加

MeterReading mr = ....;
PriorityQueue pq = ....;
....
pq.add(mr);

关于java - java中如何利用类的字段实现优先级队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30911507/

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