[英]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.