main
Obai Albek 2025-05-18 22:56:17 +02:00
parent de0b00d4ae
commit d7ebd00706
3 changed files with 0 additions and 113 deletions

View File

@ -1,54 +0,0 @@
public ArrayList<String> medienart(String medienart, HashMap<String,Mediumverwalter> medien) {
switch(medienart) {
case "Bücher":
return medien.entrySet().stream()
.filter(t -> t.getValue().getMedium() instanceof Buch)
.map(t -> t.getValue().getMedium())
.map(t -> ((Buch)t))
.map(t -> "Eindutige Kennung= " + t.toString()).collect(Collectors.toCollection(ArrayList::new));
case "Brettspiele":
return medien.entrySet().stream()
.filter(t -> t.getValue().getMedium() instanceof Brettspiel)
.map(t -> t.getValue().getMedium())
.map(t -> ((Brettspiel)t))
.map(t -> "Eindutige Kennung= " + t.toString()).collect(Collectors.toCollection(ArrayList::new));
case "Dvds":
return medien.entrySet().stream()
.filter(t -> t.getValue().getMedium() instanceof Dvd)
.map(t -> t.getValue().getMedium())
.map(t -> ((Dvd)t))
.map(t -> "Eindutige Kennung= " + t.toString()).collect(Collectors.toCollection(ArrayList::new));
case "Cds":
return medien.entrySet().stream()
.filter(t -> t.getValue().getMedium() instanceof Cd)
.map(t -> t.getValue().getMedium())
.map(t -> ((Cd)t))
.map(t -> "Eindutige Kennung= " + t.toString()).collect(Collectors.toCollection(ArrayList::new));
case "Videospiele":
return medien.entrySet().stream()
.filter(t -> t.getValue().getMedium() instanceof Videospiel)
.map(t -> t.getValue().getMedium())
.map(t -> ((Videospiel)t))
.map(t -> "Eindutige Kennung= " + t.toString())
.collect(Collectors.toCollection(ArrayList::new));
default:
return null;
}
}
kann man das Code igrendwoie zusammenfassung??
Antwort:
a, dein Code kann stark vereinfacht und zusammengefasst werden, indem du redundante Codeblöcke vermeidest. Alle case-Blöcke folgen demselben Muster. Du kannst die Class-Objekte (wie Buch.class, Brettspiel.class, etc.) als Parameter verwenden, um den Vergleich dynamisch zu gestalten.
Hier ist die überarbeitete und zusammengefasste Version:
Zusammenfassung des Codes

View File

@ -1,29 +0,0 @@
private Benutzer findBenutzer(int kartennummer) {
alleBibBenutzer.stream()
.filter(k -> k.getBibAusweis().getKartenNummer() == kartennummer)
}
}
wie kann ich hier Benutzer mit Stream zurückgeben?
Antwort:
Um in der Methode findBenutzer den Benutzer mit der angegebenen Kartennummer zurückzugeben,
kannst du den stream()-Ansatz verwenden und das Ergebnis filtern.
Schließlich kannst du mit findFirst() das erste (und in diesem Fall das einzige) Element des Streams
abrufen, das die Bedingung erfüllt. Wenn kein Benutzer mit dieser Kartennummer vorhanden ist, könnte findFirst() ein Optional-Objekt ohne Wert zurückgeben.
Hier ist die angepasste Methode:
private Benutzer findBenutzer(int kartennummer) {
return alleBibBenutzer.stream()
.filter(k -> k.getBibAusweis().getKartenNummer() == kartennummer)
.findFirst()
.orElse(null); // Gibt null zurück, falls kein Benutzer mit der Kartennummer gefunden wurde
}
Erklärung der Anpassung
stream(): Wandelt die ArrayList in einen Stream um.
filter(...): Filtert den Stream nach Benutzern, deren Kartennummer mit der gesuchten übereinstimmt.
findFirst(): Nimmt das erste Element des Streams, das die Filterbedingung erfüllt.
orElse(null): Gibt null zurück, falls kein Benutzer gefunden wurde.

View File

@ -1,30 +0,0 @@
was macht die zeile long überfälligeTage = ausgelieheneMedium.getAusleiheEnde().until(heutigesDatum, ChronoUnit.DAYS);
führt eine Berechnung durch, die die Anzahl der Tage zwischen dem Ausleihende-Datum (getAusleiheEnde()) und dem heutigen Datum (heutigesDatum) bestimmt.
Funktionsweise:
getAusleiheEnde(): Diese Methode liefert das Datum, an dem die Ausleihe enden sollte. Es wird davon ausgegangen, dass es ein LocalDate-Objekt zurückgibt.
.until(heutigesDatum, ChronoUnit.DAYS): Diese Methode berechnet die Anzahl der Tage von getAusleiheEnde() bis heutigesDatum (heutiges Datum).
Wenn heutigesDatum nach getAusleiheEnde() liegt, ist das Ergebnis positiv und gibt die Anzahl der Tage an, die das Medium überfällig ist.
Wenn heutigesDatum vor getAusleiheEnde() liegt, ist das Ergebnis negativ, da die Ausleihe noch nicht beendet ist.
Bedeutung des Ergebnisses:
Positiver Wert: Die Ausleihe ist um die berechneten Tage überfällig.
Null: Das heutige Datum ist das gleiche wie das Ende-Datum der Ausleihe.
Negativer Wert: Die Ausleihe läuft noch, und das Medium ist in |überfälligeTage| Tagen fällig.
Beispiel:
Angenommen, heutigesDatum = 2024-11-19 und getAusleiheEnde() = 2024-11-15:
Differenz = 2024-11-15.until(2024-11-19, ChronoUnit.DAYS) = 4
Das Medium ist 4 Tage überfällig.
Wenn stattdessen getAusleiheEnde() = 2024-11-22:
Differenz = 2024-11-22.until(2024-11-19, ChronoUnit.DAYS) = -3
Das Medium ist in 3 Tagen fällig.
Anwendung:
Die Variable überfälligeTage kann genutzt werden, um Logik zu implementieren wie:
Zusätzliche Gebühren für überfällige Medien.
Erinnerungen für Nutzer bei bevorstehenden Fälligkeiten.
Filtern von Ausleihen, die überfällig oder bald fällig sind.