【发布时间】:2021-12-20 14:49:11
【问题描述】:
我想按对象字段过滤
List<Book> = Arrays.asList<book1, book2, book3>;
class Book {
String author;
List<Language>;
}
class Language {
String locale;
int code;
}
Book book1 = new Book("author1", Arrays.asList(new Language("en", 1), new Language("fr", 3)));
Book book2 = new Book("author2", Arrays.asList(new Language("ca", 2), new Language("fr", 3)));
Book book3 = new Book("author3", Arrays.asList(new Language("en", 1)));
我想要一个不包含语言 en 的书籍列表。
结果应该是:
List<Book> = Arrays.asList<book1, book2>;
Book book1 = new Book("author1", Arrays.asList(new Language("fr", 3)));
Book book2 = new Book("author2", Arrays.asList(new Language("ca", 2), new Language("fr", 3)));
我尝试这样做:但它没有从 book1 中删除 'en'
return books
.stream()
.filter(book -> book.getLanguages()
.stream()
.allMatch(value -> !"en".equals(value.getLanguage())))
.collect(Collectors.toList());
【问题讨论】:
标签: filter java-8 stream predicate