簡體   English   中英

使用Google Guava API進行過濾

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM