KI-Prompts/KI-Promots2.txt hinzugefügt
parent
97e3eb503d
commit
e3338404e4
|
|
@ -0,0 +1,130 @@
|
||||||
|
User: wie kann ich speziell nach einer Medienart filtern? am besten mit lamba ausdrücken
|
||||||
|
|
||||||
|
|
||||||
|
System: m in Java mit Lambda-Ausdrücken nach einer spezifischen Medienart zu filtern, kannst du den Stream und die filter()-Methode verwenden. Dabei kannst du die getClass()-Methode und getSimpleName() nutzen, um die Medienart zu bestimmen. Hier ein Beispiel, wie du speziell nach einer Medienart (z. B. Book, DVD, VideoGame) filtern kannst:
|
||||||
|
|
||||||
|
Beispiel für das Filtern nach Medienart:
|
||||||
|
Angenommen, du hast eine Liste von Medien (mediaList), die unterschiedliche Typen von Medien enthalten (Bücher, DVDs, etc.), und du möchtest nur Medien eines bestimmten Typs herausfiltern.
|
||||||
|
|
||||||
|
1. Verwendung von Lambda-Ausdrücken:
|
||||||
|
|
||||||
|
Wenn du nach einer spezifischen Medienart filtern möchtest, kannst du die filter()-Methode des Streams zusammen mit getClass().getSimpleName() verwenden, um den Medientyp zu prüfen.
|
||||||
|
|
||||||
|
Codebeispiel:
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
public class LibraryService {
|
||||||
|
|
||||||
|
private List<Medium> mediaList;
|
||||||
|
|
||||||
|
public LibraryService(List<Medium> mediaList) {
|
||||||
|
this.mediaList = mediaList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Medium> filterByMediaType(String mediaType) {
|
||||||
|
return mediaList.stream()
|
||||||
|
// Filter nach der Medienart (z. B. Book, DVD, etc.)
|
||||||
|
.filter(medium -> medium.getClass().getSimpleName().equalsIgnoreCase(mediaType))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
// Beispiel-Initialisierung der Medien
|
||||||
|
List<Medium> mediaList = List.of(
|
||||||
|
new Book("B001", "Harry Potter", "J.K. Rowling"),
|
||||||
|
new DVD("D001", "Inception"),
|
||||||
|
new VideoGame("VG001", "The Last of Us")
|
||||||
|
);
|
||||||
|
|
||||||
|
LibraryService libraryService = new LibraryService(mediaList);
|
||||||
|
|
||||||
|
// Filtern nach Buch
|
||||||
|
List<Medium> books = libraryService.filterByMediaType("Book");
|
||||||
|
books.forEach(medium -> System.out.println(medium.getTitle())); // Gibt "Harry Potter" aus
|
||||||
|
|
||||||
|
// Filtern nach DVD
|
||||||
|
List<Medium> dvds = libraryService.filterByMediaType("DVD");
|
||||||
|
dvds.forEach(medium -> System.out.println(medium.getTitle())); // Gibt "Inception" aus
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Erklärung des Codes:
|
||||||
|
filter()-Methode:
|
||||||
|
medium.getClass().getSimpleName(): Gibt den einfachen Namen der Klasse des Objekts zurück, z. B. "Book", "DVD", "VideoGame".
|
||||||
|
equalsIgnoreCase(mediaType): Vergleicht den Klassennamen (Medienart) mit dem angegebenen mediaType (z. B. "Book"), wobei die Groß- und Kleinschreibung ignoriert wird.
|
||||||
|
Lambda-Ausdruck: Der Filter gibt nur die Medien zurück, deren Klassennamen mit der angegebenen mediaType übereinstimmen.
|
||||||
|
collect(Collectors.toList()):
|
||||||
|
Nach der Filterung wird eine neue Liste mit den gefilterten Medien erstellt.
|
||||||
|
Beispiel für verschiedene Medienarten:
|
||||||
|
Angenommen, du möchtest nach verschiedenen Medienarten filtern und hast die folgenden Klassen:
|
||||||
|
|
||||||
|
abstract class Medium {
|
||||||
|
private String id;
|
||||||
|
private String title;
|
||||||
|
|
||||||
|
public Medium(String id, String title) {
|
||||||
|
this.id = id;
|
||||||
|
this.title = title;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTitle() {
|
||||||
|
return title;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Book extends Medium {
|
||||||
|
private String author;
|
||||||
|
|
||||||
|
public Book(String id, String title, String author) {
|
||||||
|
super(id, title);
|
||||||
|
this.author = author;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAuthor() {
|
||||||
|
return author;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class DVD extends Medium {
|
||||||
|
public DVD(String id, String title) {
|
||||||
|
super(id, title);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class VideoGame extends Medium {
|
||||||
|
public VideoGame(String id, String title) {
|
||||||
|
super(id, title);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Filtern nach Book:
|
||||||
|
// Filtern nach Büchern
|
||||||
|
List<Medium> books = libraryService.filterByMediaType("Book");
|
||||||
|
In diesem Beispiel werden nur Book-Objekte aus der mediaList zurückgegeben.
|
||||||
|
Filtern nach DVD:
|
||||||
|
// Filtern nach DVDs
|
||||||
|
List<Medium> dvds = libraryService.filterByMediaType("DVD");
|
||||||
|
In diesem Fall werden nur DVD-Objekte aus der mediaList zurückgegeben.
|
||||||
|
Weitere Anpassungen:
|
||||||
|
Dynamische Filterung: Du kannst die Medienarten als Parameter übergeben, z. B. durch eine Benutzereingabe.
|
||||||
|
Mehrere Filter kombinieren: Wenn du mehrere Filterkriterien kombinieren möchtest, kannst du mehrere filter()-Methoden nacheinander aufrufen.
|
||||||
|
Zusammenfassung:
|
||||||
|
getClass().getSimpleName(): Gibt den Namen der Klasse (Medienart) zurück, z. B. Book, DVD, VideoGame.
|
||||||
|
filter(): Wendet einen Filter auf den Stream an, um nur Objekte zu behalten, deren Medienart mit dem angegebenen mediaType übereinstimmt.
|
||||||
|
equalsIgnoreCase(): Stellt sicher, dass die Medienart unabhängig von der Groß- oder Kleinschreibung verglichen wird.
|
||||||
|
Durch die Verwendung von Lambda-Ausdrücken und Streams kannst du sehr einfach und flexibel nach einer spezifischen Medienart filtern.
|
||||||
|
|
||||||
|
Lass mich wissen, falls du weitere Fragen hast oder noch andere Anpassungen benötigst! 😊
|
||||||
|
|
||||||
|
|
||||||
|
2/2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Loading…
Reference in New Issue