2 回答

TA貢獻1815條經(jīng)驗 獲得超13個贊
您可以在靜態(tài)方法中為您的成員設(shè)置不同的謂詞,并在過濾時使用它們。請注意,對于前兩個,我包含了 equals 和 contains,這取決于您想要搜索的方式,您當(dāng)然可以實現(xiàn)這兩個版本。
在媒體類中:
public static Predicate<Medien> nameFilter(String name) {
//return m -> m.getName().equals(name);
return m -> m.getName().contains(name);
}
public static Predicate<Medien> kommentar Filter(String kommentar) {
//return m -> m.getKommentar().equals(kommentar);
return m -> m.getKommentar().contains(kommentar);
}
public static Predicate<Medien> erscheinungsdatum Filter(String name) {
return m -> m.getErscheinungsdatum().equals(erscheinungsdatum);
}
然后像這樣使用它們
mb.stream().filter(Medien.nameFilter("Java"));
mb.stream().filter(Medien.kommentarFilter("Alex Pina");
請注意,在您的代碼中mb是一個Medienbibliothek我不知道它是什么的對象,因此在我的示例中mb是一個ArrayList對象。

TA貢獻1796條經(jīng)驗 獲得超10個贊
使用 java 流進行過濾。
將所有 Medien 對象存儲在一個 originalList 中。
List<Medien> originalList = new ArrayList<>();
Medien m1 = new Filme("Java Wars", "Claudio Landerer", "25.10.2018", 150, true, false);
Medien m2 = new EBooks("Cloverfield Paradox", "Julius Onah", "25.10.2018", 12345678, 120, 100000);
Medien m3 = new Filme("Haus des Geldes", "Alex Pina", "01.11.2018", 200, false, true);
Medien m4 = new EBooks("Poltergeist", "Tobe Hooper", "01.11.2018", 87654321, 175, 100);
originalList.add(m1);
originalList.add(m2);
originalList.add(m3);
originalList.add(m4);
現(xiàn)在為每種類型的過濾數(shù)據(jù)創(chuàng)建一個方法。例如:對于基于名稱的過濾,有如下方法。
List<Medien> getListBasedOnName(String name){
return originalList.stream.filter(value ->
value.getName().equals(name)).collect(Collectors.toList());
}
需要為每個需要過濾的屬性創(chuàng)建類似的方法。
添加回答
舉報