Java - 2次元配列を印刷するための最良の方法は?

2Dの配列を印刷するには、どのような方法が良いのかと考えていました。これは私が持っているコードですが、これが良い方法なのかどうかを考えていました。また、このコードの中で私が犯した間違いを見つけたら、それを訂正してください。ありがとうございました。

int rows = 5;
int columns = 3;

int[][] array = new int[rows][columns];

for(int i = 0; i<rows; i++)
    for(int j = 0; j<columns; j++)
        array[i][j] = 0;

for(int i = 0; i<rows; i++)
{
    for(int j = 0; j<columns; j++)
    {
        System.out.print(array[i][j]);
    }
    System.out.println();
}

簡単な方法で印刷できます。

2次元の配列を印刷するには以下のようにします。

int[][] array = new int[rows][columns];
System.out.println(Arrays.deepToString(array));

1次元の配列を表示するには以下を使用します。

int[] array = new int[size];
System.out.println(Arrays.toString(array));
解説 (3)

あなたが持っているものには何の問題もありません。二重にネストされたforループは、あなたのコードを読む人には簡単に理解できるはずです。

とはいえ、次のような定式化の方がより密度が高く、よりイディオム的なJAVAです。私は、ArraysCollectionsのような静的なユーティリティークラスのいくつかを早急に調べることをお勧めします。これらのクラスを効率的に使うことで、膨大な量の定型文を削ることができます。

for (int[] row : array)
{
    Arrays.fill(row, 0);
    System.out.println(Arrays.toString(row));
}
解説 (1)

Ashika'さんの回答は、(0,0)を通常のCSの慣習に従って左上に表現したい場合には、素晴らしい効果を発揮します。 しかし、通常の数学的な慣習を用いて(0,0)を左下に配置したい場合は、次のようにします。

LinkedList printList = new LinkedList();
for (char[] row: array) {
    printList.addFirst(Arrays.toString(row));;
}
while (!printList.isEmpty())
    System.out.println(printList.removeFirst());

これはLIFO(Last In First Out)を使用して、印刷時に順序を逆にしています。

解説 (0)