현재 내 우선 순위 큐에 문제가 있습니다. 내 메서드를 테스트 할 때 내 큐가 최우선 순위를 반환하지 않는다는 오류가 발생합니다. 나는 단계별로 설문 조사 또는 제안 방법이이 문제를 일으키는 이유를 알 수 없습니다. 어떤 도움을 주시면 감사하겠습니다. 감사합니다우선 순위 큐 구현에 문제가 발생했습니다. Java
public class HeapArrayQueue <E extends Comparable<? super E> > extends AbstractQueue <E> {
@SuppressWarnings("unchecked")
private E[] data = (E[])(new Comparable[7]);
private int count = 0;
private int front = 0;
public int size() {
return count;
}
public boolean isEmpty() {
return size() == 0;
}
public E poll() {
if (isEmpty())
return null;
else {
E ans = data[front ];
front = (front+1);
return ans;
}
}
public boolean offer(E element) {
if (element == null)return false;
else {
ensureCapacity();
data[count] = element;
bubbleUpFromIndex(count);
count++;
return true;
}
}
private void bubbleUpFromIndex(int nodeIndex) {
if (nodeIndex != 0){
int parent = (nodeIndex -1)/2;
if (data[nodeIndex].compareTo(data[parent]) > 0){
swap(nodeIndex, parent);
bubbleUpFromIndex(parent);
}
}
}
private void swap(int from, int to) {
E temp = data[from];
data[from] = data[to];
data[to] = temp;
}
private void ensureCapacity() {
if (count == data.length) {
@SuppressWarnings("unchecked")
E[] newData = (E[])new Comparable[data.length * 2];
for (int loop = 0; loop < count; loop++) {
newData[loop] = data[loop];
}
data = newData;
}
return;
}
public Iterator<E> iterator() {
return null;
}
}
나는 그것을 받아 피해자에 comp103을하는 테스트
@Test
public void QueueRespectsPriority() {
nonEmptyQueue.offer(t1);
assertEquals("Queue should return element with highest priority", t1, nonEmptyQueue.poll());
}
@Duncan 추가 테스트 – M0rty
t1 유형은 equals 메소드를 대체합니까? – JamesB
t1은 comparable을 구현하는 객체입니다. 나는 equals 메소드를 오버라이드한다고 생각하지 않는다. – M0rty