Welche Datenstruktur passt bei mir?

Status
Nicht offen für weitere Antworten.

sunnyandy

Mitglied
Hallo,

ich möchte folgendes Implementieren: Habe bereits eine Klasse Studienordnung, zu einem Objekt dieser Klasse soll man verschiedene Vorlesungen speichern können. Diese Vorlesungen sind Objekte der Klassen Vorlesung.
Wichtig ist dabei, dass ich sie in einer bestimmten Reihenfolge ausgeben möchte. Zuerst sortiert nach dem Semester,anschließend nach einem int-Wert, der mir sagt, an wievielter Stelle sie in dem Semester steht. Beide Werte stehen in einem Objekt der Klasse Vorlesung.

Ich brauche also denke ich mal eine Liste. Welche eigenet sich für eine Sortierung, wie ich sie anstrebe? Würde sich ein Binärbaum auch eignen?

Viele Dank im Voraus!
Grüße :###
 
B

Beni

Gast
Kann eine Vorlesung doppelt auftreten (zwei Objekte für die ein > oder < kein Sinn macht)?

Wenn ja: dann würde ich eine ganz normale Liste verwenden, und die Ausgabe sortieren (Collections.sort, bzw. Arrays.sort verwenden).

Wenn nein: dann lohnt sich ein TreeSet. Das TreeSet hat eine Ordnung, und lässt niemals zwei gleiche Einträge zu.

In jedem Fall musst du einen Comparator, der Vorlesungen vergleicht, schreiben (oder du lässt Vorlesung das Interface Comparable implementieren).
 

sunnyandy

Mitglied
Hallo Beni, danke schonmal für deine Antwort!

Also ein <> Vergleich muss immer einen Sinn haben, es gibt keine komplett gleiche Vorlesung.
Dann wird wohl ein TreeSet in Frage kommen.

...oder du lässt Vorlesung das Interface Comparable implementieren...

Ich könnte es mir so vorstellen, wie ich es mal gelesen habe:
Code:
classe Vorlesung implements Comparable<Vorlesung>
{
...
public int compareTo(Vorlesung v)
{
    Hier zwei Vorlesungen vergleichen und dann einen positiven oder negativen int returnen.
}
}
Ist es richtig, dass ich die Methode einfach in die Klasse einbauen muss und schon funktioniert das Sortieren?[/code]
 
B

Beni

Gast
Ja, das ist richtig. Wenn this < v ist, dann gibst du etwas < 0 zurück, wenn this > v ist, gibst du etwas > 0 zurück.
 

sunnyandy

Mitglied
Hallo,

habe es jetzt in mein Programm implementiert :shock:

Habe drei Methoden gebastelt, um Veranstaltungen zu einer Studienordnung hinzuzufügen:
Code:
TreeSet<SoVeranstaltungsMaske> veranstaltungsMasken;
...
// Collection für Veranstaltungsmasken
		veranstaltungsMasken = new TreeSet<SoVeranstaltungsMaske>();
		/*
		 * Hier alle Veranstaltungsmasken für diese Studienordnung öffnen TODO
		 * Startdatum von dieser Studienordnung übergeben
		 */

		veranstaltungsMasken.addAll(SoVeranstaltungsMaskeDB
				.getList("1999-01-01"))
// getList gibt auch eine Collection zurück, aber eine von ArrayList! Schlimm?

public void addVeranstaltungsMaske(SoVeranstaltungsMaske curMaske) {
		veranstaltungsMasken.add(curMaske);
	}

	public void removeVeranstaltungsMaske(SoVeranstaltungsMaske curMaske) {
		veranstaltungsMasken.remove(curMaske);
	}

	public TreeSet<SoVeranstaltungsMaske> getAllVeranstaltungsMaskenSorted() {
		// Ist es hier schon sortiert???
		return veranstaltungsMasken;
	}

Den Befehl sort gibt es ja nicht, wie ihn es bei anderen Objekten der Klasse Collections gibt.
Muss ich noch etwas bestimmtes machen, damit sortiert wird? Wie du siehst, lasse ich mir in getAllVeranstaltungsMaskenSorted() einfach nur das TreeSet ausgeben. Reicht es denn aus?

Den Sortieralgorithmus habe ich natürlich auch implementiert:

Code:
public int compareTo(SoVeranstaltungsMaske maske) {
		if (getZuordnungsSemester() > maske.getZuordnungsSemester())
			// Dieses Objekt > Parameter
			return 1;
		else if (getZuordnungsSemester() < maske.getZuordnungsSemester()) {
			// Dieses Objekt < Parameter
			return -1;
		} else {
			// Beide sind im selben Semester
			if (getPosition() > maske.getPosition()) {
				// Dieses Objekt > Parameter
				return 1;
			} else {
				// Dieses Objekt < Parameter
				return -1;
			}
		}
	}

Muss ich den irgendwo aufrufen oder reicht es, wenn ich das Interface Comparable implementiere?
Weil bisher geht leider noch nichts, keine Fehlermeldung, einfach gar nichts passiert...
Danke schonmal!

Viele Grüße und gut Nacht :roll: :D
 
B

Beni

Gast
Das TreeSet ist immer geordnet, da musst du nichts mehr machen.

Dein compareTo ist noch nicht vollständig, es muss auch identische Objekte behandeln können. "x.compareTo( x )" muss immer 0 zurückgeben, bei dir gibt es -1 zurück. Das könnte in einer exotischen Situation das TreeSet verwirren.

Für die Ausgabe sollte eine einfache Schleife reichen:
Code:
for( SoVeranstaltungsMaske maske : veranstaltungsMasken){
  System.out.println( maske );
}

Dein Code ist ja nicht vollständig hier, da kann ich dir auch nicht sagen, wieso garnichts passiert. Hast du vergessen deine Testmethoden aufzurufen?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
ruutaiokwu datenstruktur welche sich "im kreis" dreht Allgemeine Java-Themen 26
G Welche Datenstruktur? Allgemeine Java-Themen 19
S Welche Datenstruktur für verschiedene Sprachen sinnvoll? Allgemeine Java-Themen 2
F welche Datenstruktur? Allgemeine Java-Themen 9
F Welche Datenstruktur Allgemeine Java-Themen 2
Z Welche Datenstruktur verwende ich h_ier bloss ? Allgemeine Java-Themen 14
D Welche Datenstruktur? Allgemeine Java-Themen 2
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
P Feststellen, Welche Classes ich aus einem JAR nutze? Allgemeine Java-Themen 6
H Apache fop -- welche Möglichkeit gibt es um den Fortschritt anzuzeigen (Progressbar) Allgemeine Java-Themen 5
goldmensch Datentypen Welche Methode hat die bessere Performance? Allgemeine Java-Themen 12
S Wenn eine Klasse zwei Interfaces mit derselben Methodensignatur implementiert: welche wird aufgerufen? Allgemeine Java-Themen 15
X Collections Gibt es eine Klasse welche die Vorteile von List und HashMap vereint, aber konstante Laufzeit (O(1)) hat in Java? Allgemeine Java-Themen 4
F Java Web App - welche Technologien? Allgemeine Java-Themen 11
S Welche API? Allgemeine Java-Themen 6
B Klassen Objekt erzeugen und Konstruktor aufrufen - Welche Lösung ist besser? Allgemeine Java-Themen 2
K Welche Zertifizierung passt? Allgemeine Java-Themen 10
A Variable, welche Exeption wirft als "Global" deklarieren Allgemeine Java-Themen 13
J Videokonferenz mittel Java ? Welche Möglichkeiten habe ich ? Allgemeine Java-Themen 2
J Welche Layouts benutzt ihr? Allgemeine Java-Themen 2
G Wiedereinstieg, welche Java Version empfehlt ihr Allgemeine Java-Themen 7
M Welche Exceptionbehandlung ist sinnvoll? Allgemeine Java-Themen 3
H NetBeans geotools 15 oder 16 - welche Abhängingkeiten gibt es? Welche Jars brauche ich? Allgemeine Java-Themen 4
S Welche Java Techologien gibt es fürs Frontend Allgemeine Java-Themen 4
S Welche Nutzen bringen Lamda Expressions? Allgemeine Java-Themen 1
M Welche Umgebung und Frameworks für mich als Umsteiger Allgemeine Java-Themen 6
C Welche Styleconvention Allgemeine Java-Themen 0
R LinkedList und Threads - welche Methode ist besser? Allgemeine Java-Themen 2
F Welche Systeme für hoch skalierbare Webanwendung? Allgemeine Java-Themen 7
Landei Welche Klassen fehlen im JDK? Allgemeine Java-Themen 18
P Check, welche Java Version installiert bevor ein Programm ausgeführt wird. Allgemeine Java-Themen 12
I Webseite auslesen (welche mittels Javascript Inhalt einbindet) Allgemeine Java-Themen 4
R Welche waren eure ersten Projekte? Allgemeine Java-Themen 10
G Wie kann man sehen, welche Applikationen mit java arbeiten? Allgemeine Java-Themen 17
L Social Media Webportal -> Welche Technologie (JEE, GWT) Allgemeine Java-Themen 8
J Welche Informationen werden beim Kompilieren gespeichert? Allgemeine Java-Themen 3
I Swing Welche Swing Komponente soll ich nehmen? Allgemeine Java-Themen 2
vladimir Welche API für Grafik und Drag&Drop Allgemeine Java-Themen 3
schlingel Plugin-Architektur - Welche nehmen? Allgemeine Java-Themen 6
U Welche 2D-API? Allgemeine Java-Themen 4
S Vererbung: Welche Methode wird verwendet? Allgemeine Java-Themen 9
M Welche Dateiformate kann Java einlesen?? Allgemeine Java-Themen 26
E Neues Projekt - Welche GUI / IDE /Techniken / etc. Allgemeine Java-Themen 14
E Welche Icons für sichtbar /unsichtbar Allgemeine Java-Themen 2
J Welche Lösung für Servlets und JSPs in Eclipse? Allgemeine Java-Themen 5
N Für welche Art von Berechnungen macht JCUDA Sinn? Allgemeine Java-Themen 12
A Welche Exception verwenden? Allgemeine Java-Themen 2
T Welche Art von Hilfe?? Allgemeine Java-Themen 5
N welche run.bat? Allgemeine Java-Themen 3
R Assoziativer Speicher welche Unterschiede? Allgemeine Java-Themen 5
Developer_X Welche Dateien kann Java laden? Allgemeine Java-Themen 9
G Welche Schreibeweise ist richtig Allgemeine Java-Themen 16
ARadauer welche java version wird benutzt Allgemeine Java-Themen 4
E Welche Java-Version kennt isEmpty() ? Allgemeine Java-Themen 2
F Welche dicken Java-Bücher kennt ihr? Allgemeine Java-Themen 31
M Prüfen, welche anderen Programme laufen Allgemeine Java-Themen 5
K [erledigt] JVM welche läuft Allgemeine Java-Themen 9
G synchronized-Sclüsselwort: welche Reihenfolge zum Betreten? Allgemeine Java-Themen 6
E welche standalone Version von Tomcat benutzen? Allgemeine Java-Themen 6
S Welche Speicherung von Daten bei Kalendarfunktion der jtable Allgemeine Java-Themen 7
A feststellen, welche Klassen ein Interface implementieren Allgemeine Java-Themen 3
P welche jar enthält was? Allgemeine Java-Themen 5
V Welche Oberfläche empfehlt ihr mir? Allgemeine Java-Themen 19
S Welche jar's werden wirklich benötigt?` Allgemeine Java-Themen 5
G Dateien löschen welche vor heute erstellt wurden? Allgemeine Java-Themen 7
G Prüfen welche JRE-Version gebraucht wird Allgemeine Java-Themen 19
I Welche Möglichkeiten bietet Java um Records in Dateien zu sp Allgemeine Java-Themen 10
B Drucken - welche Bibliothek favorisiert Ihr? Allgemeine Java-Themen 16
J Welche Daten für Ative-X Funktion? Allgemeine Java-Themen 5
P welche java version für javax.mail? Allgemeine Java-Themen 7
B Erkennen welche Objekte den Heap verbrauchen? Allgemeine Java-Themen 2
B Welche Java-Version? Allgemeine Java-Themen 7
S Welche Javaversion ist in meinem Linux? Allgemeine Java-Themen 2
M 2 Javaversionen welche aktiv? Allgemeine Java-Themen 3
C Datumsfelder auslesen - egal welche Zeitzone Allgemeine Java-Themen 2
F SuppressWarnings("xxx") - welche Möglichkeiten gib Allgemeine Java-Themen 4
R Welche Exception bei write() nehmen Allgemeine Java-Themen 7
reibi JVM fragen welche Apps geladen sind Allgemeine Java-Themen 7
L Welche Collection ist die richtige ? Listen mergen Allgemeine Java-Themen 3
B Grafische Oberfläche - Welche Komponenten? Allgemeine Java-Themen 5
T JMF, welche Codecs gibts, und vor allem, wo? Allgemeine Java-Themen 9
H Welche Scriptsprache verwendet ihr in Java Allgemeine Java-Themen 9
G Welche Referenzsoftware ist in Java geschrieben? Allgemeine Java-Themen 8
P Welche Collection verwenden? Allgemeine Java-Themen 4
M Eigene Datenstruktur um eine Menge zu speichern Allgemeine Java-Themen 3
Kirby.exe Union Find Datenstruktur Allgemeine Java-Themen 27
U Klassen Komplexe Datenstruktur in Java Allgemeine Java-Themen 4
J Datenstruktur für eine Map erstellen Allgemeine Java-Themen 2
B Suche geeignete Datenstruktur Allgemeine Java-Themen 5
P Große Datenstruktur im Speicher halten Allgemeine Java-Themen 13
B Suche passende Datenstruktur für 2 Einträge Allgemeine Java-Themen 19
R Collections Datenstruktur gesucht Allgemeine Java-Themen 12
D Datenstruktur für Hierarchie/Baum mit Tiefe 3 Allgemeine Java-Themen 8
D Datenstruktur .. BlockingQueue (LIFO) Allgemeine Java-Themen 3
P Suche Datenstruktur Allgemeine Java-Themen 2
ruutaiokwu schnelle datenstruktur... Allgemeine Java-Themen 13
S Baumstruktur/Datenstruktur in Datei speichern Allgemeine Java-Themen 23
D Datenstruktur Allgemeine Java-Themen 2
B Datenstruktur: Liste Allgemeine Java-Themen 5
A Thread sichere Datenstruktur Allgemeine Java-Themen 5

Ähnliche Java Themen


Oben