Java帮助:PriorityQueue
我有一门课叫jobTypeJava帮助:PriorityQueue,java,priority-queue,Java,Priority Queue,我有一门课叫jobType package pcs_assignment_2; public class JobType { private int ID; private double aTime; private double sTime; public JobType(int ID, double aTime, double sTime) { this.ID = ID; this.aTime = aTime;
package pcs_assignment_2;
public class JobType
{
private int ID;
private double aTime;
private double sTime;
public JobType(int ID, double aTime, double sTime)
{
this.ID = ID;
this.aTime = aTime;
this.sTime = sTime;
}
public int getID() {
return ID;
}
public void setID(int ID) {
this.ID = ID;
}
public double getaTime() {
return aTime;
}
public void setaTime(double aTime) {
this.aTime = aTime;
}
public double getsTime() {
return sTime;
}
public void setsTime(double sTime) {
this.sTime = sTime;
}
public String toString() {
return "JobType{" + "ID=" + ID + "aTime=" + aTime + "sTime=" + sTime + '}';
}
}
现在我想要的是JobType类型的优先级,它根据时间对队列进行排序。有可能吗?您可以有一个简单的列表,列出所有作业所在的位置,然后在想取出作业之前,使用屏幕上的比较功能对列表进行排序 需要编写自定义比较器,请参见下面的代码。 这里10是队列的初始容量
new PriorityQueue<JobType>(10, new Comparator<JobType>() {
@Override
public int compare(JobType o1, JobType o2) {
return Double.compare(o1.sTime,o2.sTime);
}
});
newpriorityqueue(10,新的比较器(){
@凌驾
公共整数比较(作业类型o1、作业类型o2){
返回双倍。比较(o1.sTime,o2.sTime);
}
});
使用带有比较器的优先队列
。请参见)除了comparator选项之外,我相信只要让您的类实现可比较的接口,就可以实现相同的行为;只有在这种排序模仿对象的自然排序时才这样做。您在理解JavaDocs的哪一部分时遇到问题?使用比较器…可能重复-这有一个具体的例子,即使用PriorityQueue和比较器。当添加对象时,que的容量是否会不断增加?是,会的。它只是一个初始容量,并没有只用于比较器的构造函数。为每个比较创建一个Double
,成本很高。另一种方法是使用Double.compare(o1.sTime,o2.sTime)
Good comment!,成功change@Peter为什么你说为每次比较创建Double
很昂贵?因为对象创建开销?