Hashtable -> Ordnerstruktur

Status
Nicht offen für weitere Antworten.

guni

Bekanntes Mitglied
Hallo,

in Perl war es ganz einfach, beliebig tief verschachtelte Strukturen zu erstellen.
Sowas war zum Beispiel ganz schnell gemacht:

Code:
my @stdstruct = (
	'Private Dateien',
	'Schularbeiten',
	'Hausübungen'
);
my $struct = {
	'Volksschule' => {
		'1A' => {
			'Markus Wagner' => {
				'Typ' => 'Lehrer',
				'Ordner' => [
					@stdstruct,
					'Leistungsnachweise'
				]
			},
			'Bernhard Huber' => {
				'Typ' => 'Schüler',
				'Ordner' => @stdstruct
			},
			'Christian Bauer' => {
				'Typ' => 'Schüler',
				'Ordner' => @stdstruct
			}
		},
		'2B' => {
			'Andrea Vötter' => {
				'Typ' => 'Lehrer',
				'Ordner' => [
					@stdstruct,
					'Leistungsnachweise'
				]
			},
			'Manuel Weirauch' => {
				'Typ' => 'Schüler',
				'Ordner' => @stdstruct
			},
			'Stefanie Waller' => {
				'Typ' => 'Schüler',
				'Ordner' => @stdstruct
			}
		}
	},
	'Hauptschule' => {
		...
	},
	'Gymnasium' => {
		...
	},
	'HTL' => {
		...
	}
}
}

so .... ich spar euch da jetzt mal weitere Details. Die Klassengrößen und Schultypen werden da recht schnell wachsen ;-)
Tatsache ist: ich möchte so eine verschachtelte Struktur auch in Java erstellen. Und zwar allgemein gehalten; d.h. eine Funktion, die mir das aus einer Liste beliebiger Stichworte (nicht zwingend 'Schule') erstellt.

Im 2ten Schritt möchte ich dann eine Funktion schreiben, die mir aus so einer HashMap(??) eine Ordnerstruktur erstellt - hier wieder: beliebig aufgebaute HashMap ;-)

so - das is jetzt ganz schön viel für einen Anfänger 😀

habt ihr da einen sinnvollen Ansatz wie ich das Ganze angehen könnte?

lg,
 
Such mal nach dem Muster "Compositium" (deutsch) oder besser gleich nach "Composite" (englisch).

Persönlich gleube ich aber dass du dich da etwas übernommen hast, ist nicht wirklich zum Einstieg geeignet, ausser du hättest schon gute Vorkenntnisse der OO.
 
Hi,

findest du nicht, dass ein Composite ein bisserl ein 'mit Kanonen auf Spatzen schießen' ist?
ich will doch eigentlich nur einen beliebig tief verschachtelten Hash erstellen, und daraus dann eine Ordnerstruktur aufbauen!
das kann doch nicht sooo schlimm sein, dass ich da gleich ein entwurfsmuster brauch, dass von verschiedenen komonenten ausgeht und allgemeine methoden zu definieren versucht.
gibt es keinen leichteren ansatz?

lg, guni
 
IMHO hast du noch die falsche Einstellung und Vorstellungen, Java ist kein Perl, dein sog. "Hash" ist nur eine von vielen Möglichkeiten, aber wenn du es einfach willst, würdest du Listen verwenden, da weder Hashset noch Hashtable sinnvoll sind.

Composite ist nicht sonderlich schwer, du wirst sowieso damit enden, ob du willst oder nicht 😉
 
was spricht denn gegen einen HashMap?
Wie gesagt - ich komme aus der Perl-Welt und dort wäre das die einzig sinnvolle Lösung ...

bin gerade dabei, mich ein bisschen in die Datenstrukturen von Java einzulesen;
aber im Endeffekt kann ich mir nicht vorstellen, dass es außer Skalaren, Arrays und Assoziativen Arrays noch etwas gibt ... wie gesagt: perl-Denken eben :lol:

lg, guni
 
Lege das Perl denken ab, hihlft nix in Java, stört aber sehr dabei Lösungen zu finden.

Lies dich doch mal in die Java Collections ein.

Wie gesagt, HashMap dafür wäre quatsch in Java.
 
Hoi,

ich weiß nicht ob ich deine Frage richtig verstanden habe, aber was spricht dagegen das in ein objektorientiertes Muster zu pressen?

Ein Objekt nimmt Dinge wie einen Typ auf (zB Gymnasium) und einen Untertyp (zB. 1A) und hat eine Liste mit Appendern die von einem Typ sind, der Name, Vorname, Typ und Ordner aufnehmen kann.

Das oberste Objekt kannst Du dann widerrum in eine Liste packen.
Oder was hast Du mit den Daten vor?

greetz
SLi
 
Hi SLi,

es spricht eigentlich nix gg. ein objektorientiertes Muster.
Aber ich denke, dass es das ganze weitaus komplizierter macht, weil ich find dazu net wirklich an source im net und bis ich mal das muster durchschaut hab, hab ich das ganze warscheinlich schon längst mit einem array gelöst.
die frage ist dann: welchen vorteil hätte ich dann noch durch das muster. methoden kann ich eh nicht wirklich brauchen, ich brauche dann nur mehr eine funktion, die mir dieses muster als ordnerstruktur im filesystem ablegt!

lg, guni
 
Google doch mal nach "java composite pattern", am besten auf einem englischsprachigen google.
Da findest du mehr als genug Beispielcode.

Komplizierter? Nee, nicht wirklich, wie gesagt, darauf läuft es sowieso hinaus.

Spätestens beim anlegen im Filesystem musst du dann zwischen Ordnern und anderen Dateien unterscheiden.

Vielleicht solltest du dir eine einfachere Aufgabe zum erlernen von Java suchen.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben