在Python中,如果我想对xor操作进行折叠,我可以写:
reduce(operator.xor, my_things, 0)
而不是更麻烦的
reduce(lambda x, y: x^y, my_things, 0)
新的Java 8功能特性中是否有类似的内容?例如写这样的东西
myThings.reduce(0, Integer::xor)
而不是
myThings.reduce(0, (x, y) -> x ^ y)
答案 0 :(得分:3)
我们在私有Integer#sum(int, int)
包中建议您使用IntPipeline
,但其他数字运算符没有类似的方法。
@Override
public final int sum() {
return reduce(0, Integer::sum);
}
您可以自己定义它们。
答案 1 :(得分:0)
是的,您可以在任何静态或实例方法上使用::
方法引用运算符来代替功能接口(lambda)。我不认为Integer有一个。