私はBiFunction
で2つのジェネリックアレイをペアで組み合わせたいと思っています。ここでは、素朴な実装を参照してください。forループせずにこれを行うには、よりエレガントな方法があるかどう2つの配列をJavaでペアで組み合わせる優雅な方法8
<A,B,C> C[] combine(A[] as, B[] bs, BiFunction<A,B,C> op) {
if (as.length == bs.length) {
C[] cs = (C[]) new Object[as.length];
for(int i = 0; i < as.length; i++) {
cs[i] = op.apply(as[i], bs[i]);
}
return cs;
} else {
throw new IllegalArgumentException();
}
}
のだろうか - 多分Java 8 Stream
で。私はあなたの提案に満足しています。
Aominèはストリームベースのループを提供していましたが、よりエレガントではないと思います。しかし、 '.range(..)'の後ろに '.parallel()'を追加すると並列処理が可能になりますので、そのアプローチを使うとマルチプロセッサ環境のほうが良いかもしれません。 – Pshemo
Guavaの['Streams.zip()'](https://google.github.io/guava/releases/snapshot/api/docs/com/google/common/collect/Streams.html#zip-java)を使用できます。 .util.stream.Stream-java.util.stream.Stream-java.util.function.BiFunction-)。 – shmosel
あなたはその警告を抑制してはいけません、btw。遅かれ早かれあなたの顔に爆破する縛りがあります。 – shmosel