如何在java中使用类的字段实现优先级队列
我有一个名为如何在java中使用类的字段实现优先级队列,java,priority-queue,Java,Priority Queue,我有一个名为MeterReading的java类,它有两个字段stringmetername和intmeterlevel 现在,如果MeterLevel介于0和3之间,则为低,当介于3和6之间时,中等和高于6的为高。如何将该类MeterReading传递给优先级队列?这可能吗?您必须实现类的可比接口。诀窍是添加一个方法来获取compareTo方法中使用的levelClass(低、中、高) public class MeterReading implements Comparable {
MeterReading
的java类,它有两个字段stringmetername
和intmeterlevel
现在,如果
MeterLevel
介于0和3之间,则为低,当介于3和6之间时,中等和高于6的为高。如何将该类MeterReading
传递给优先级队列?这可能吗?您必须实现类的可比接口。诀窍是添加一个方法来获取compareTo
方法中使用的levelClass
(低、中、高)
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();
}
}
若要将MeterReading
添加到PriorityQueue
中,请仅添加它
MeterReading mr = ....;
PriorityQueue pq = ....;
....
pq.add(mr);
您想按meterLevel还是按Low/Medium/High进行排序?通过调用q.add(reading)将读取传递到队列但是首先你必须定义你想要如何比较它们。这是可能的。创建标志并根据需要使用getter和boolean将数据传递到优先级队列。请展示你的作品。另外,如何将meterReading类传递到优先级队列中?我想看看如何将任意数量的meterReading对象添加到优先级队列中。代码是这样的:PriorityQueue=newpriorityqueue();queue.add(mr)?在本例中是PriorityQueue queue=new PriorityQueue();添加(mr);其中mr是MeterReading类型的对象
MeterReading mr = ....;
PriorityQueue pq = ....;
....
pq.add(mr);