Ich habe keine Ahnung von Gernerics und das Skript besteht aus 6 Folien , die mir überhaupt nicht weiter helfen.
Wäre toll wenn ihr mir bei der Lösung der Aufgabe helfen würdet.
Aufgabe:
Passen Sie die Implementierung der Warteschlange so an, dass man mit ihr Elemente einer
beliebigen Klasse verwalten kann. Benutzen Sie dafür generische Datentypen (Generics). Da Arrays in Java
keinen generischen Inhalt haben können, müssen Sie auf andere Lösungen zurückgreifen. Eine Möglichkeit
ist es, das Array vom Typ Object [] zu deklarieren und entsprechend zu casten.
Wäre toll wenn ihr mir bei der Lösung der Aufgabe helfen würdet.
Aufgabe:
Passen Sie die Implementierung der Warteschlange so an, dass man mit ihr Elemente einer
beliebigen Klasse verwalten kann. Benutzen Sie dafür generische Datentypen (Generics). Da Arrays in Java
keinen generischen Inhalt haben können, müssen Sie auf andere Lösungen zurückgreifen. Eine Möglichkeit
ist es, das Array vom Typ Object [] zu deklarieren und entsprechend zu casten.
Java:
public class Warteschlange {
private Job[] schlange;
private int erstes;
private int letztes;
public Warteschlange() {
this(5);
}
public Warteschlange(int groesse) {
if (groesse > 0) {
this.schlange = new Job[groesse];
this.erstes = 0;
this.letztes = 0;
} else {
System.out.println("Die initiale Kapazitaet muss mindestens 1 sein!");
System.exit(-1);
}
}
public Warteschlange(Warteschlange original) {
this(original.schlange.length);
for (int i = 0; i < this.schlange.length; i++) {
this.schlange[i] = original.schlange[i];
}
this.erstes = original.erstes;
this.letztes = original.letztes;
}
public void offer(Job job) {
if(job == null) {
System.out.println("Der einzufuegende Job darf nicht null sein!");
return;
}
if( (letztes +1) % this.schlange.length == erstes){
System.out.println("Schlange ist voll und kann kein weiteres Element aufnehmen!");
return;
}
this.schlange[letztes] = job;
letztes = (letztes +1) % this.schlange.length;
}
public Job poll() {
if(erstes == letztes){
System.out.println("Die Warteschlange ist leer");
return null;
}
Job result = peek();
this.schlange[erstes] = null;
this.erstes = (this.erstes + 1) % this.schlange.length;
return result;
}
public Job peek() {
if(erstes == letztes){
return null;
}
return this.schlange[erstes];
}
public void vergroessern(int anzahl){
Job[] neueSchlange = new Job[schlange + anzahl];
int pos = erstes;
while((erstes + pos) % schlange.length != letzes){
neueSchlange[pos] = schlange[(erstes + pos) % schlange.length];
}
schlange = neueSchlange;
erstes = 0;
letzes = pos;
}
}[/Java]