我有一个列表
List<Person> persons =
Arrays.asList(
new Person("Max", 4),
new Person("Peter", 2),
new Person("Pamela", 3),
new Person("David", 9));
我想创建Stream并按字段过滤列表,类似于Java 8:
persons
.stream()
.filter(p -> p.age >= 18)
答案 0 :(得分:3)
创建Stream
是不可能的,但是您仍然可以使用Guava的过滤器(Collections2.filter()或Iterables.filter(),具体取决于结果如何)与Guava的Predicate结合使用
Predicate<Person> predicate = new Predicate<Person>() {
@Override
public boolean apply(Person person) {
return person.age >= 18;
}
};
Collection<Person> result = Collections2.filter(persons, predicate);
如果您想了解有关番石榴过滤和变换的更多信息,我的资料来源是:https://www.baeldung.com/guava-filter-and-transform-a-collection