0
select(list, having(on(Integer.class).intValue() % 2, equalTo(0)));

上記のコードは例外をスローします。

4

2 に答える 2

1

操作はselect()の%前に評価する必要がありますが、エントリごとに評価する必要があります。つまり、必要なのはJava8で使用可能なクロージャです。

ループを使用している場合は、次のように記述できます。

for(int i: list)
    if(i % 2 == 0)
       // do something with i.

Javaの構文では、理想的には選択肢が必要な場合に、ループを使用することが最もクリーンなソリューションになることがよくあります(これもはるかに高速です)。

于 2012-08-06T14:40:14.773 に答える
1

独自のマッチャーを定義する必要があります。

Matcher<Integer> even = new Predicate<Integer>() {         
 public boolean apply(Integer item) {                 
 return item % 2 == 0;         
} };

適応元:http://code.google.com/p/lambdaj/wiki/LambdajFeatures

于 2012-08-07T10:41:29.167 に答える