Hallo liebes Forum!
Ich hab die Aufgabe meine eigene PrioritiyQueue zu implementieren. Die Elemente der Warteschlange soll von Comparable und die Warteschlange selbst soll von AbstractQueue erben.
Die Methoden des Interface Queue zu implementieren ist kein Problem, ich weiß aber leider nicht wie ich die Elemente der Warteschlage sortieren bzw wie ich die Priorität setzen soll.
Ich habe folgendes Grundgerüst für meine PriorityQueue:
Dabei soll diese Klasse folgenden Test bestehen:
Danke schonmal im vorraus!!!
Ich hab die Aufgabe meine eigene PrioritiyQueue zu implementieren. Die Elemente der Warteschlange soll von Comparable und die Warteschlange selbst soll von AbstractQueue erben.
Die Methoden des Interface Queue zu implementieren ist kein Problem, ich weiß aber leider nicht wie ich die Elemente der Warteschlage sortieren bzw wie ich die Priorität setzen soll.
Ich habe folgendes Grundgerüst für meine PriorityQueue:
Java:
import java.util.AbstractQueue;
import java.util.Iterator;
public class MyPriorityQueue<E extends Comparable<E>> extends AbstractQueue<E>{
private E[] store;
private int capacity; // maximale Groesse
private int size = 0; // aktuelle Groesse
@SuppressWarnings("unchecked")
public MyPriorityQueue(int capacity) throws IllegalArgumentException {
if(capacity <= 0) {
throw new IllegalArgumentException();
}
store = (E[]) new Comparable[capacity];
this.capacity = capacity;
}
/*
* (non-Javadoc)
* @see java.util.Queue#offer(java.lang.Object)
*/
@Override
public boolean offer(E e) {
return false;
}
/*
* (non-Javadoc)
* @see java.util.Queue#poll()
*/
@Override
public E poll() {
return null;
}
/*
* (non-Javadoc)
* @see java.util.Queue#peek()
*/
@Override
public E peek() {
return null;
}
/*
* (non-Javadoc)
* @see java.util.AbstractCollection#iterator()
*/
@Override
public Iterator<E> iterator() {
return new Iterator<E>() {
@Override
public boolean hasNext() {
return false;
}
@Override
public E next() {
return null;
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
};
}
/*
* (non-Javadoc)
* @see java.util.AbstractCollection#size()
*/
@Override
public int size() {
return size;
}
}
Dabei soll diese Klasse folgenden Test bestehen:
Java:
public class MyPriorityQueueTest {
@Test
public void test() {
MyPriorityQueue<String> q = new MyPriorityQueue<>(10);
q.offer("8");
q.offer("2");
q.offer("4");
q.offer("5");
q.offer("7");
q.offer("1");
q.offer("3");
q.offer("6");
q.offer("9");
String[] a = {"1","2","3","4","5","6","7","8","9"};
int i=0;
for (String s : a) {
assertEquals(a[i++], q.poll());
}
Danke schonmal im vorraus!!!