首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法强制转换为类。。。是装载器的未命名模块

无法强制转换为类。。。是装载器的未命名模块
EN

Stack Overflow用户
提问于 2020-11-14 06:01:29
回答 1查看 478关注 0票数 0

我正在尝试使用链表实现从头开始创建一个优先级队列ADT。在优先级队列中,我需要插入作业,作业必须按优先级顺序执行。我构造的优先级ADT来自我的Java书,而我的Job类是由我创建的。我可以将所有作业插入到优先级队列中,但是当我尝试removeMin()时,我得到了一个cannot cast类...错误。

这是我的方法,获取一个数组,将它们放入队列中,然后删除它们。

代码语言:javascript
复制
public static void executeJobs(Job[] jobInputArray) {

    SortedPriorityQueue pq = new SortedPriorityQueue();
    
    for(int j = 0; j < jobInputArray.length; j++) {
        pq.insert(jobInputArray[j].getFinalPriority(), jobInputArray[j]);
        jobInputArray[j].setEntryTime(j+1);
    }
    
    int cycles = 0;
    
    while(!pq.isEmpty()) {
        Job currentJob = (Job) pq.removeMin();
        System.out.println(currentJob.getJobName());
    }
}

这个问题出现在我的: Job currentJob = (Job) pq.removeMin();行中。

这是我的SortedPriorityQueue类:

代码语言:javascript
复制
public static class SortedPriorityQueue<K,V> extends AbstractPriorityQueue<K,V>{
private PositionalList<Entry<K,V>> list = new LinkedPositionalList<>();

public SortedPriorityQueue() { super(); }
public SortedPriorityQueue(Comparator<K> comp) {super(comp);}

public Entry<K,V> insert(K key, V value) throws IllegalArgumentException{
    checkKey(key);
    Entry<K,V> newest = new PQEntry<>(key,value);
    Position<Entry<K,V>> walk = list.last();
    
    while(walk != null && compare(newest, walk.getElement()) < 0)
        walk = list.before(walk);
    if(walk == null)
        list.addFirst(newest);
    else
        list.addAfter(walk, newest);
    return newest;
}
public Entry<K,V> min(){
    if (list.isEmpty()) return null;
    return list.first().getElement();
}

public Entry<K,V> removeMin(){
    if(list.isEmpty()) return null;
    return list.remove(list.first());
}
public int size() {return list.size();}

}

非常感谢您的帮助..提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-14 06:12:16

removeMin返回一个Entry<K,V>,而不是一个Job。它不能强制转换为Job。缺少Entry的实现,但我假设它有一个value()getValue()方法:

代码语言:javascript
复制
Job currentJob = (Job) pq.removeMin().getValue();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64828592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档