我必须使用数组实现优先级队列。
如何将优先级附加到我想在数组中插入的元素。我希望对数组进行排序,以便在插入数组时对数组进行排序,其中数组的开头是具有最高优先级的元素,而end是具有最低优先级的元素。
我尝试创建一个具有键和值属性的私有类Entry,但我的插入仍然无效。有关如何入门的任何想法?
private class Entry{
private int key;
private E value;
public Entry(int key, E value){
this.key = key;
this.value = value;
}
public int getKey() {
return key;
}
public E getValue() {
return value;
}
}
public class PrioritetArraySorteret<E> implements PrioritetADT<E> {
private int capacity = 5;
private Entry S[];
private int size;
public PrioritetArraySorteret() {
S = (E[]) new Object[capacity];
size = 0;
}
@Override
public void insert(int p, E e) {
Entry temp = new Entry(p, e);
int i = 0;
while(i < S.length) {
Entry t = S[i];
if (t.compareTo(temp) == -1) {
i++;
} else {
int j = i;
S[j + 1] = S[j];
j++;
}
}
S[i] = temp;
size++;
}
一个额外的问题
如何使用容量长度创建Entry数组?如果我在构造函数中键入Entry而不是E,则会出错。
线程“main”中的异常java.lang.ClassCastException:[Ljava.lang.Object;无法投射到[Lopgave5Prioritet.PrioritetArraySorteret $ Entry;)
答案 0 :(得分:-2)
有不同的问题,但看起来不正确的是:
更改
S = (E[]) new Object[capacity];
到
S = new Entry[capacity];