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 mediaList; public LibraryService(List mediaList) { this.mediaList = mediaList; } public List 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 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 books = libraryService.filterByMediaType("Book"); books.forEach(medium -> System.out.println(medium.getTitle())); // Gibt "Harry Potter" aus // Filtern nach DVD List 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 books = libraryService.filterByMediaType("Book"); In diesem Beispiel werden nur Book-Objekte aus der mediaList zurückgegeben. Filtern nach DVD: // Filtern nach DVDs List 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