gpt4 book ai didi

java - 优先级队列上的 classCastException; java

转载 作者:行者123 更新时间:2023-12-02 04:48:13 25 4
gpt4 key购买 nike

我正在实现一个包含 5 个进程的优先级队列。每个进程都有相同的字段,但值不同。我有3节课。一个是该过程的模板,第二个是我将针对这些过程实现的实际算法和一个测试。我正在尝试打印优先级队列中进程的所有到达时间属性。这些字段都是整数,但实际进程的类型是 Process,这会导致 PriorityQueue 类崩溃。我这里需要帮助。

头等舱:

package SPN;

public class Process {

public int arrive_time= 0;
private int burst_time = 0;
private int remain_time = 0;

public Process (int arr_time, int bur_time) {

this.arrive_time = arr_time;
this.burst_time = bur_time;
}

//public int getArrTime() {return arrive_time;}
public int getBurTime() {return burst_time;}
public int getRemTime() {return remain_time;}
}

第二类:

package SPN;

import java.util.*;

public class SPN {

private Process p1, p2, p3, p4, p5;

//Priority Queue of the processes
PriorityQueue<Process> prq = new PriorityQueue<Process>();

public SPN() {

p1 = new Process(0, 10);
prq.add(p1);

p2 = new Process(1, 8);
prq.add(p2);

p3 = new Process(2, 11);
prq.add(p3);

p4 = new Process(5, 6);
prq.add(p4);

p5 = new Process(7, 7);
prq.add(p5);
}

public void test() {

// create iterator from the queue
Iterator<Process> it = prq.iterator();

System.out.println("Values of queue: " + it.next());
}
}

第三类:

package SPN;

public class Test {

public static void main(String[] args) {

SPN spn = new SPN();
spn.test();
}
}

最佳答案

为了让 PriorityQueue 能够优先考虑您的目标(Process 对象),它需要是一个 Comparable 对象。

public class Process implements Comparable<Process> {

//your existing code here

@Override
public int compareTo(Process proc) {
//implement this
return 0;
}
}

关于java - 优先级队列上的 classCastException; java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29485245/

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