我有一个整数数组。我需要给它的每个元素加 1。将给定常量添加到每个元素(即无需显式循环)的最短、最通用的方法是什么?我在网上查看并不断获得有关将元素添加到数组(即串联)的页面。
难道没有比循环每个元素并添加常量更优雅的事情吗?有某种标准库方法吗?
就这一点而言,如何在没有显式循环的情况下将两个数组加在一起(即矩阵加法)?
最佳答案
以下是如何使用 Functional Java 编写上面的两种情况.
<小时/><强>1。每个元素加 1:
它是一个函数式编程库,因此它不提供变异操作。但您可以轻松地自己添加它们。
public static <A> void transform(Array<A> xs, F<A, A> f) {
for(int i = 0; i < xs.length(); i++) {
xs.set(i, f.f(xs.get(i)));
}
}
用途:
transform(yourArray, Integers.add.f(1));
<小时/>
<强>2。两个矩阵相加:
让xss
和yss
是两个矩阵,都是类型 Array<Array<Integer>>
。然后你可以添加它们:
xss.zip(yss).map(new F<P2<Array<Integer>, Array<Integer>>, Array<Integer>>() {
public Array<Integer> f(P2<Array<Integer>, Array<Integer>> p) {
Array<Integer> xs = p._1();
Array<Integer> ys = p._2();
return xs.zip(ys).map(new F<P2<Integer, Integer>, Integer>() {
public Integer f(P2<Integer, Integer> q) {
return q._1() + q._2();
}
});
}
});
<小时/>
这可能感觉比必要的更冗长,这是因为 Java 还不支持 lambda 表达式。与此同时,IDEs can help使此类技术更易于使用。
关于java - 向 int[] 的所有元素添加常量值的最短方法是什么?矩阵加法怎么样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10876380/