java - 使用 Streams 将 3 个数组转换为 1 个对象数组

标签 java arrays java-stream

假设我有以下三个数组:

int r[] = {255,255,255};
int g[] = {0,0,0};
int b[] = {255,255,255};

所有阵列 将具有相同的长度 .

我想将它们转换为类型为 的对象数组颜色 :
public class Color {
   int r,g,b;

   public Color(int r, int g, int b) {
        this.r = r;
        this.g = g;
        this.b = b;
   }

}

Color[] arr = new Color[3];

其中每个索引将包含来自 3 个数组的相同索引的 r,g,b。例如,让我们说 Color[1] = new Color(r[1],g[1],b[1]);
我如何使用 Java Streams 做到这一点?

代码的 for 循环变体是:
Color arr[] = new Color[r.length];

for(int i=0;i<r.length;i++) {
    Color c = new Color(r[i],g[i],b[i]);
    arr[i] = c;
}

有没有办法使用流来做到这一点?

最佳答案

IntStream.range + mapToObj然后累积到一个数组:

IntStream.range(0, r.length)
         .mapToObj(i -> new Color(r[i], g[i], b[i]))
         .toArray(Color[]::new);

关于java - 使用 Streams 将 3 个数组转换为 1 个对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61961257/

相关文章:

java - GXT 寻呼网格

java - 信任边界违规 - Veracode 缺陷

jQuery - 对父 Div 与子 div 值进行排序不起作用

javascript - 使用变量访问 JS 对象

java - 使用仅一项的 java Streams 作为计算上下文 - 好不好?

java - 收到错误 java.lang.IllegalArgumentException

Java 永远不会通过引用传递,对吗?...对吗?

c - 在 Intel X_86 和 ARM 架构上转储两个相邻的 C 数组时出现奇怪的不同结果

java - 拆分字符串行列表并将单词添加到新列表中

java - 将 map 列表转换为使用 ImmutablePair 和 Java 8 流的 map