[英]Filtering using Google Guava API
是否可以通过Google Guava API检查列表中的所有对象是否具有相同的属性?
此外,有没有一种方法可以将更多参数发送给Predicate?
假设我要使用从用户处获得的字符串来过滤所有对象,并且希望谓词在应用过滤器时使用此参数。
您可以如下创建自己的谓词:
class MyPredicate implements Predicate<MyObject> {
private final String parameter;
public MyPredicate(String parameter) {this.parameter = parameter;}
boolean apply(MyObject input) {
// apply predicate using parameter.
}
}
然后,您可以执行以下操作进行过滤:
Iterables.filter(myIterable, new MyPredicate(myParameter));
您应该警惕,尽管这会执行惰性过滤器。
是否可以通过Google Guava API检查列表中的所有对象是否具有相同的属性?
是:
Foo first = list.get(0).getFoo();
boolean allSameFoo = Iterables.all(list, element -> element.getFoo().equals(first));
或者,如果您尚未使用Java 8:
final Foo first = list.get(0).getFoo();
boolean allSameFoo = Iterables.all(list, new Predicate<Bar> {
@Override
public boolean apply(Bar element) {
return element.getFoo().equals(first);
}
});
有没有办法将更多参数发送给谓词
是:
String s = getFromUser();
Iterables.filter(list, element -> element.getFoo().equals(s));
或者,如果您尚未使用Java 8:
final String s = getFromUser();
Iterables.filter(list, new Predicate<Bar> {
@Override
public boolean apply(Bar element) {
return element.getFoo().equals(s);
}
});
似乎您并不真正了解内部类的工作原理,因此您应该阅读有关它们的教程: https : //docs.oracle.com/javase/tutorial/java/javaOO/nested.html 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.