ストリームを使用して文字列に2D int配列をフォーマット

アレホ:

私は、次の配列を持っています:

private static final int[][] BOARD = {
    { 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0 }
};

そして私は、私は、コンソール上でそれを印刷した場合ので、それは次のようになります、その上に文字列表現を作成します:

[0,0,0,0,0]
[0,0,0,0,0]
[0,0,0,0,0]
[0,0,0,0,0]
[0,0,0,0,0]

私は、これは2ネストされたと片付けることができfor、ループが、私は、この使用してストリームを達成しようとしています。これは私がこれまでに得たものです。

public String toString() {
    StringJoiner board = new StringJoiner("\n");

    for (int i = 0; i < BOARD.length; i++) {
        board.add(
            IntStream.of(BOARD[i])
                .mapToObj(String::valueOf)
                .collect(Collectors.joining(",", "[", "]"))
        );
    }
    return board.toString();
}

この何かは可能ですか?私は、パフォーマンスには特に興味がない(したい場合はその点でいくつかのコメントを追加して自由に感じる)、私はちょうどストリーム操作の単鎖でこれを行うにしようとしています。

エリオットの新鮮:

あなたはネストすることができstream最初のカンマで、次いで、システムライン分離によって、一緒にそれぞれのレベルをマッピングします。お気に入り、

return Arrays.stream(BOARD).map(a -> Arrays.stream(a)
            .mapToObj(String::valueOf).collect(Collectors.joining(",", "[", "]")))
            .collect(Collectors.joining(System.lineSeparator()));

I GET

[0,0,0,0,0]
[0,0,0,0,0]
[0,0,0,0,0]
[0,0,0,0,0]
[0,0,0,0,0]

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=206727&siteId=1