java - 如何将 Java 8 Stream 转换为二维数组?

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

我正在尝试将基于 map 的 Stream 转换为二维数组。我已经想出如何将它存储在一维数组中。这是工作代码片段:

Float[] floatArray = map.entrySet()
                        .stream()
                        .map(key -> key.getKey().getPrice())
                        .toArray(size -> new Float[size]);

当我执行上面的代码时,我的 Float 数组按预期填充。现在我需要将其扩展到一个二维数组,我需要将结果存储在二维数组的第一维中,如下所示:

Float[][1] floatArray = map.entrySet()
                           .stream()
                           .map(key -> key.getKey().getPrice())
                           .toArray(size -> new Float[size][1]);

上面的代码不起作用。你能告诉我如何用 Java 8 流完成这个任务吗?提前致谢!

最佳答案

如果你看<A> A[] toArray(IntFunction<A[]> generator) ,你会看到它转换了一个 Stream<A>A[] , 这是 A 的一维数组元素。所以为了让它创建一个二维数组,Stream 的元素必须是数组。

因此,您可以先创建一个二维数组 map你的元素Stream到一维数组,然后调用 toArray :

Float[][] floatArray = 
    map.entrySet()
       .stream()
       .map(key -> new Float[]{key.getKey().getPrice()})
       .toArray(size -> new Float[size][1]);

关于java - 如何将 Java 8 Stream 转换为二维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47397467/

相关文章:

java - Java中的数字溢出

c - 如何仅在一个方向上移动数组元素的位置

c - 使用 3D 数组 - 无法进行输出

c# - 使用动态字段名称使用 LINQ 查询实体

C++;类方法指针; lambda ;传递 lambda 作为成员函数指针;

java - Spring AOP : In an Around advice, 我可以多次调用proceed()吗?

java - 在 OnViewCreated 中打开键盘

java - Hadoop:java.lang.IncompatibleClassChangeError:找到接口(interface) org.apache.hadoop.mapreduce.JobContext,但类是预期的

c++ - Boost::multi_array——引用太慢

Java 8 BufferedReader lines() 方法打印不同的计数