select(list, having(on(Integer.class).intValue() % 2, equalTo(0)));
上面的代码抛出异常。
答案 0 :(得分:1)
必须在select()之前评估%
操作,而对每个条目评估的是什么。即你想要的是Java 8中提供的闭包。
如果您使用循环,则可以编写
for(int i: list)
if(i % 2 == 0)
// do something with i.
Java的语法经常使得使用循环是最干净的解决方案,理想情况下你应该有一个选择(它也很多更快)。
答案 1 :(得分:1)
您需要定义自己的匹配器:
Matcher<Integer> even = new Predicate<Integer>() {
public boolean apply(Integer item) {
return item % 2 == 0;
} };
改编自:http://code.google.com/p/lambdaj/wiki/LambdajFeatures