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

上面的代码抛出异常。

4

2 回答 2

1

%操作必须在 select() 之前进行评估,而您希望对每个条目进行评估。即你想要的是 Java 8 中可用的闭包。

如果您使用循环,则可以编写

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 回答