当前位置: 首页 > 面试题库 >

使用流填充多维数组

公冶鸣
2023-03-14
问题内容

我是Java 8的新手,目前无法完全掌握Streams,是否可以使用Stream功能操作填充数组?这是我如何使用标准的for循环来实现的示例代码:

public static void testForLoop(){
    String[][] array = new String[3][3];
    for (int x = 0; x < array.length; x++){
        for (int y = 0; y < array[x].length; y++){
            array[x][y] = String.format("%c%c", letter(x), letter(y));
        }
    }               
}

public static char letter(int i){
    return letters.charAt(i);
}

如果有可能,我将如何使用Stream?如果可能,是否方便(性能和可读性明智)?


问题答案:

在这里,您有一个解决方案,它生成数组而不是修改先前定义的变量:

String[][] array = 
    IntStream.range(0, 3)
             .mapToObj(x -> IntStream.range(0, 3)
                                     .mapToObj(y -> String.format("%c%c", letter(x), letter(y)))
                                     .toArray(String[]::new))
             .toArray(String[][]::new);

如果要使用并行流,那么避免诸如修改变量(数组或对象)之类的副作用非常重要。这可能会导致竞争状况或其他并发问题。您可以在java.util.stream软件包文档中了解有关此内容的更多信息-请参见“ 干扰” ,“ 无状态行为”“副作用” 部分。



 类似资料:
  • 我对Javafx不熟悉,想知道如何从2维字符串数组填充桌面视图: 会非常感激你的回应。

  • 我有一个细胞阵列<代码>公共静态小区[][]孤岛=新小区[3][3] 每个细胞都有x和y坐标以及“居住”在细胞内的动物列表。我需要用列表中的随机动物随机填充这个数组<代码>公共静态列表 最后,我有一堆空的细胞,我相信这部分是动物。子列表(initialcount,initialcount randomdata) 可以做得更优雅。如何用allanimals列表中的元素填充岛数组?这是我的手机课

  • 我试过了,但这不起作用。我如何在一个带有流的映射中创建这个映射,同时计算更改?

  • 到目前为止,这就是我得到的,但我不太确定接下来该怎么办。我(认为)这里发生的是,它到达数组的第一个位置,在0,0处,并生成一个数字。然后转到1,1和2,2,依此类推。我不确定该从那里开始,我相信有一种更有效的方法可以一次填充整行或整列。 此外,我的编译器不允许我像平时一样使用cout或endl?它坚持我使用std::cout,我只是想知道为什么。

  • 问题内容: 嗨,我正在尝试根据用户输入自动填充2d数组。用户将输入1个数字,该数字将设置2d数组的大小。然后,我想打印出数组的数字。例如,如果用户输入数字4。2d数组将是4行乘4列,并且应包含数字1到16,并打印如下。 但是,我正在努力思考正确的声明来做到这一点。目前,我的代码只是打印出包含*的2d数组。 有谁知道我如何打印数字的任何想法,我真的被卡住了。我的代码如下: 问题答案: 读取n值,

  • 我有一个非常简单的Java/Spring应用程序来演示KStream的功能,但不幸的是,我无法使KStream加载数据。想法是创建一个KStream对象,并使用controller GET方法简单地检索其内容。示例代码: 问题-主题中有消息,但foreach(...)中的KStream枚举没有从中检索任何结果。KStream对象状态为“RUNning”,日志中没有错误。 生成随机应用程序ID并将A