【问题标题】:java8 stream of arrays to 2 dimensional arrayjava8数组流到二维数组
【发布时间】:2019-01-08 11:28:35
【问题描述】:

我是 Java8 新手,不能使用流将一个数组映射到另一个二维数组。

我有一个二维数组,它是一种模式:

boolean[][] pattern = {
            {true, true, false},
            {true, false, true},
            {false, true, true}
    };

第二个包含键的数组。

0 表示:从模式中取 0 个元素

1 表示:从模式中取 1 个元素,依此类推

int[] keys = {2, 1, 0};

我想从这 2 个数组中生成另一个二维数组。在这种情况下,结果将如下所示:

boolean[][] result = {
                {false, true, true},
                {true, false, true},
                {true, true, false}
        };

这是Java7中的代码:

public boolean[][] producePlan(int[] keys, boolean[][] pattern) {
        boolean[][] result = new boolean[keys.length][];
        for (int i = 0; i < keys.length; i++) {
            result[i] = pattern[keys[i]];
        }
        return result;
    }

在 Java8 中我只能打印每一行

Arrays.stream(keys).mapToObj(x -> pattern[x]).forEach(x -> System.out.println(Arrays.toString(x)));

但不能转成二维数组。

请帮忙

【问题讨论】:

    标签: multidimensional-array java-8 java-stream


    【解决方案1】:

    你可以这样做,

    boolean[][] result = Arrays.stream(keys).mapToObj(i -> pattern[i]).toArray(boolean[][]::new);
    

    由于在map 阶段之后有Stream&lt;boolean[]&gt;,因此您只需要提供一个数组生成器函数即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-23
      • 2013-11-23
      • 2017-12-30
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 2011-01-10
      • 2019-08-17
      相关资源
      最近更新 更多