java - 如何将 char[][] 扁平化为 char[]?

标签 java arrays

我有一个多维字符数组:

board = new char[3][3];

在我的一个类中代表一个井字游戏,我已经初始化了它。

将其展平为一个数组的最佳方法是什么?

最佳答案

int[][] x = { { 1, 2 }, { 3, 4 } };

int [] flatten = Arrays.stream(x)
                       .flatMapToInt(Arrays::stream)
                       .toArray();

使用流 api 这很简单。

如果您使用的是 char [][]:

char[][] board = {
            { 'x', 'o', ' ' },
            { ' ', 'o', 'x' },
            { ' ', 'o', 'x' },
};

StringBuilder sb = Arrays.stream(board)
            .flatMapToInt(x -> IntStream.range(0, x.length).map(i -> x[i]))
            .mapToObj(x -> (char) x)
            .collect(StringBuilder::new, StringBuilder::append, StringBuilder::append);

    char[] chars = new char[sb.length()];
    sb.getChars(0, sb.length(), chars, 0);

关于java - 如何将 char[][] 扁平化为 char[]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52898850/

相关文章:

java - 处理多个按钮的 android onclick(总共 81 个)

java - 如何纠正得到 NaN 作为我的结果?

java - 您能为 Java Web 应用程序编码推荐一个标准的、很酷的环境吗?

java - 如何检查hashmap中的所有员工是否都有名字?

php - 将一组数据库列添加到数组时出现问题

c++ - 来自 std::find 的此错误的优雅解决方案是什么?

java - PowerMock - @PrepareForTest 上的 NPE

python - 可读性和效率,哪个更好? Numpy、元组等?

php - 如何从逗号分隔的标签中选择唯一关键字

c# - C# 数组中的线程安全