Hi,
Ich habe eine xml Datei die, nicht vollständig hier aufgeführt, wie folgt aufgebaut ist:
Es gibt eine Lehrerliste, in der Lehrer als Objekte abgelegt sind. Ein Lehrer hat einen Stundenplan, wo unter anderem die von ihm zu unterrichtenden Fächer eingetragen sind.
Dann gibt es ein "No Relation" Objekt, das vorgibt was für den Lehrer nicht möglich ist, bspw weitere zu unterrichtende Fächer oder Lehrer, die nicht mit ihm in Beziehung stehen (rein thematisch) bspw Mathematik und BWL ( ).
Sieht circa so aus:
Die xml habe ich mit JAXB eingelesen und mir stehen quasi alle Listen und Elemente sowie Attribute zu Verfügung und ich habe auch schon alles implementiert, aber die Klasse ist durch das ständige drüber iterieren aufgebläht und ich dachte mir eben: "Mensch, würdest du dich nur mit lambdas auskennen, könntest du ein Hexenwerk mit Filter, Flatmap und Co zusammenbrauen" und deshalb bin ich hier.
Was will ich letztendlich haben und wie habe ich es gemacht?
Ich bin zuerst über die Liste drüber und habe mir zwei Listen angelegt, eine für a_l und eine für a_f und habe da alles reingepackt was dementsprechend da drin steht.
Dann bin ich nochmal über jeden Lehrer und habe geguckt ob es ein a_f oder ein a_l gibt. Falls ja, merke ich mir den Namen des Lehrers und schreibe hinter diesen Lehrer alle Lehrer, die bei diesem Lehrer in a_l drin stehen und alle Lehrer, die ein Modul unterrichten, das in a_f drin steht.
Somit habe ich eine gute Übersicht über Lehrer und deren Relation zu Modulen und anderen Lehrern.
Geht so was auch mit lambdas?
Quasi eine mehrfache Iteration über eine Liste ohne explizit wieder die Liste aus der Hand geben zu müssen?
So etwas wie
Bin mir gerade nicht mehr sicher wegen der richtigen Syntax. Aber kann ich aus einem Filter/einer map das Ergebnis zurückgeben und auf dem Ergebnis direkt weiterarbeiten?
Ich habe eine xml Datei die, nicht vollständig hier aufgeführt, wie folgt aufgebaut ist:
Es gibt eine Lehrerliste, in der Lehrer als Objekte abgelegt sind. Ein Lehrer hat einen Stundenplan, wo unter anderem die von ihm zu unterrichtenden Fächer eingetragen sind.
Dann gibt es ein "No Relation" Objekt, das vorgibt was für den Lehrer nicht möglich ist, bspw weitere zu unterrichtende Fächer oder Lehrer, die nicht mit ihm in Beziehung stehen (rein thematisch) bspw Mathematik und BWL ( ).
Sieht circa so aus:
Code:
<lehrer_liste>
<Lehrer Name"Boss">
<stdp>
<f_liste>
<f Name="Bildverarbeitung">
...
</f_liste>
</stdp>
<nr>
<a_f> //Ausschluss Fächer
<f Name="Erziehung"/>
...
</a_f>
<a_l> // Ausschluss Lehrer
<Lehrer Name="Hugo"/>
...
</a_l>
</nr>
</Lehrer>
<Lehrer Name....>
.....
.....
</Lehrer>
<Lehrer_liste>
Was will ich letztendlich haben und wie habe ich es gemacht?
Ich bin zuerst über die Liste drüber und habe mir zwei Listen angelegt, eine für a_l und eine für a_f und habe da alles reingepackt was dementsprechend da drin steht.
Dann bin ich nochmal über jeden Lehrer und habe geguckt ob es ein a_f oder ein a_l gibt. Falls ja, merke ich mir den Namen des Lehrers und schreibe hinter diesen Lehrer alle Lehrer, die bei diesem Lehrer in a_l drin stehen und alle Lehrer, die ein Modul unterrichten, das in a_f drin steht.
Somit habe ich eine gute Übersicht über Lehrer und deren Relation zu Modulen und anderen Lehrern.
Geht so was auch mit lambdas?
Quasi eine mehrfache Iteration über eine Liste ohne explizit wieder die Liste aus der Hand geben zu müssen?
So etwas wie
Code:
LehrerListe.stream().filter(k -> k.hasAF || k.hasAL) Return k;
.map(.....)
.collect(....);
Zuletzt bearbeitet: