2 回答
TA贡献1815条经验 获得超13个赞
您可以在静态方法中为您的成员设置不同的谓词,并在过滤时使用它们。请注意,对于前两个,我包含了 equals 和 contains,这取决于您想要搜索的方式,您当然可以实现这两个版本。
在媒体类中:
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条经验 获得超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);
现在为每种类型的过滤数据创建一个方法。例如:对于基于名称的过滤,有如下方法。
List<Medien> getListBasedOnName(String name){
return originalList.stream.filter(value ->
value.getName().equals(name)).collect(Collectors.toList());
}
需要为每个需要过滤的属性创建类似的方法。
添加回答
举报
