Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java LambdaJ:为什么我们不能在select子句中应用操作?_Java_Lambda_Functional Programming_Lambdaj - Fatal编程技术网

Java LambdaJ:为什么我们不能在select子句中应用操作?

Java LambdaJ:为什么我们不能在select子句中应用操作?,java,lambda,functional-programming,lambdaj,Java,Lambda,Functional Programming,Lambdaj,上面的代码引发异常。在选择之前必须对%操作进行评估,而您希望对每个条目对其进行评估。i、 您需要的是Java8中提供的闭包 如果使用循环,则可以编写 select(list, having(on(Integer.class).intValue() % 2, equalTo(0))); Java的语法通常使使用循环成为最干净的解决方案,而在理想情况下,您应该有一个选择,这也要快得多。您需要定义自己的匹配器: for(int i: list) if(i % 2 == 0) /

上面的代码引发异常。

在选择之前必须对%操作进行评估,而您希望对每个条目对其进行评估。i、 您需要的是Java8中提供的闭包

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

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

Java的语法通常使使用循环成为最干净的解决方案,而在理想情况下,您应该有一个选择,这也要快得多。

您需要定义自己的匹配器:

for(int i: list)
    if(i % 2 == 0)
       // do something with i.
改编自:http://code.google.com/p/lambdaj/wiki/LambdajFeatures

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