Queue in Form eines dynamischen Arrays

babuschka

Top Contributor
Hallo zusammen,
habe eine Queue in Form eines dynamischen Arrays implementiert.
Jetzt habe ich folgendes Problem. Ich möchte gerne eine Methode schreiben, die jedes Element vollständig durchgeht und danach -zufällig- wieder in die "Queue" einreiht.
Hat jemand einen Denkansatz für mich?

VG Greenbird
 

babuschka

Top Contributor
Tja das frage ich mich auch. Aber es gibt leider Dozenten die an so etwas Spaß haben. Ich weiß selber, dass es völliger Schwachsinn ist ;-)

public void randomize(){
ArrayList<T> random = new ArrayList<T>();
Collections.shuffle(random);
RandomQueue<T> out = new RandomQueue<T>();
out.enqueue((T) random);

}

geht sowas??
 
S

SlaterB

Gast
ob dein Code etwas mit einem 'dynamischen Array' zu tun hat, kann niemand sagen,
nicht zuletzt, weil der Begriff 'dynamisches Array' unbekannt ist..

Formulierungen wie 'jedes Element vollständig durchgehen' tragen auch nicht zur Klarheit bei

es könnte alles vom Staubsauber bis zum Atomkraftwerk herauskommen
 

babuschka

Top Contributor
Die Warteschlange wird über die Methoden enqueue und dequeue gefüttert.
Die Warteschlange wird über ein dynamisches Array realisiert, welches folgende Methoden zur Verfügung stellt:

public class DynamicArray {
DynamicArray();
void set(int index, Object element);
Object get(int index);
void add(Object element);
Object remove(int index);
int size();
}


Die Klasse RandomQueue beinhaltet folgende Methoden:
public class RandomQueue<T> {
public RandomQueue();
public void enqueue (T data);
public T dequeue() throws NoSuchElementException;
public void randomize(;
public boolean isEmpty();
public int size();
 
S

SlaterB

Gast
in randomize() der Klasse RandomQueue wird ein neues RandomQueue-Objekt erstellt?
das klingt mir nicht sinnvoll, zumal du das 'out' dort nicht weiterverwendest,

wie ist denn RandomQueue intern implementiert, verlinkte Liste, Array, Liste?
diese interne Struktur musst du auseinandernehmen

was hat DynamicArray damit bisher zu tun, verwendet RandomQueue intern ein DynamicArray?
hast du überhaupt für beide Klassen schon eine Implementierung?
poste die dochmal, randomize() ist eher am Ende interessant, vorher sollte alles normale funktionieren,

falls es nicht eine theoretische Aufgabe ist, 'angenommen der Rest funktioniert, wie sieht dann die Methode randomize() aus?'

deine Methode könnte durchaus in die richtige Richtung gehen, nachdem was ich bisher verstehe,
nur erstelle kein neues RandomQueue, sondern füge die Elemente in das eigene Objekt ein?
und zwar doch wohl kaum die ganze ArrayList random, sondern die Elemente daraus einzeln per Schleife?
ach ja, und die ArrayList random ist bisher leer??, da muss natürlich erstmal alles rein,
und das eigene Objekt muss noch geleert werden, falls das beim Übertrag in die ArrayList nicht sowieso passiert,
fehlt also doch noch ne Menge..
 

babuschka

Top Contributor
RandomQueue erzeugt im Konstruktor nur ein DynamicArray.

Java:
public class RandomQueue <T>{
	
	private DynamicArray<T> entries;
	
	public RandomQueue(){
		entries = new DynamicArray<T>();
	}
	
	public void enqueue(T data){
		entries.add(data);
	}
	
	public void randomize(){
		DynamicArray<T> random = new DynamicArray<T>();
		Collections.shuffle(random);
		RandomQueue<T> out = new RandomQueue<T>();
		out.enqueue((T) random);
		
	}
	
	public boolean isEmpty(){
		if(this == null){
			return true;
		}
		return false;
	}
	
	public int size(){
		return this.size();
		
	}

Das große Problem ist für mich im Prinzip nur, wie ich das DynamicArray entries durchlaufe und es in zufälligerreihenfolge wieder in die "Queue" die ja eigentlich auch ein array ist, einfüge. Ziemlich verwirrend. Aber so ticken unsere Dozenten leider
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
was redest du vom Ticken deiner Dozenten?
lassen wir den Zufall weg, kannst du überhaupt die Entries durchlaufen, der Reihe nach ausgeben?
das wäre ja ne ziemlich sinnvolle Aktion
 

Neue Themen


Oben