Javaの行列/2D配列とは何ですか?
「行列とは、固定数の行と列に配置された数値の集合です。」 通常、これらは実数です。一般に、行列には複素数を含めることができますが、簡単にするために、ここでは整数のみを使用します。マトリックスがどのようなものかを見てみましょう。以下は 4 行 4 列の行列の例です。2D 配列の宣言と初期化
ここでは、配列のサイズを宣言するだけ、またはサイズを指定せずに配列を初期化するさまざまな方法をいくつか紹介します。
public class Matrices {
public static void main(String[] args) {
// declare & initialize 2D arrays for int and string
int[][] matrix1 = new int[2][2];
int matrix2[][] = new int[2][3];
//the size of matrix3 will be 4x4
int[][] matrix3 = { { 3, 2, 1, 7 },
{ 9, 11, 5, 4 },
{ 6, 0, 13, 17 },
{ 7, 21, 14, 15 } };
String[][] matrix4 = new String[2][2];
//the size of matrix5 will be 2x3
// 3 cols because at max there are 3 columns
String[][] matrix5 = { { "a", "lion", "meo" },
{ "jaguar", "hunt" } };
}
}
2D 配列トラバーサル
Java で通常の配列を走査する方法は誰もが知っています。2D 配列の場合も難しくありません。これには通常、ネストされた「for」ループを使用します。初心者の中には、これを異質な概念のように考える人もいるかもしれませんが、深く掘り下げていくと、練習すればすぐに実装できるようになります。次のスニペットを見てください。完全に理解できるように、各行に対応する列の数のみが表示されます。
public class MatrixTraversal {
public static void main(String[] args) {
int[][] matrix = new int[4][4];
for (int i = 0; i < matrix.length; i++)
{
// length returns number of rows
System.out.print("row " + i + " : ");
for (int j = 0; j < matrix[i].length; j++)
{
// here length returns # of columns corresponding to current row
System.out.print("col " + j + " ");
}
System.out.println();
}
}
}
出力
行 0 : 列 0 列 1 列 2 列 3 行 1 : 列 0 列 1 列 2 列 3 行 2 : 列 0 列 1 列 2 列 3 行 3 : 列 0 列 1 列 2 列 3
Java で 2D 配列を印刷するには?
2D 配列のトラバーサルに慣れたら、Java で 2D 配列を出力するいくつかの方法を見てみましょう。ネストされた「for」ループの使用
これは、Java で行列を出力する最も基本的な方法です。
public class MatrixTraversal {
public static void printMatrix(int matrix[][])
{
for (int i = 0; i < matrix.length; i++)
{
// length returns number of rows
for (int j = 0; j < matrix[i].length; j++)
{
// here length returns number of columns corresponding to current row
// using tabs for equal spaces, looks better aligned
// matrix[i][j] will return each element placed at row ‘i',column 'j'
System.out.print( matrix[i][j] + "\t");
}
System.out.println();
}
}
public static void main(String[] args) {
int[][] matrix = { { 3, 2, 1, 7 },
{ 9, 11, 5, 4 },
{ 6, 0, 13, 17 },
{ 7, 21, 14, 15 } };
printMatrix(matrix);
}
}
出力
3 2 1 7 9 11 5 4 6 0 13 17 7 21 14 15
「for-each」ループの使用
ここでは、「foreach ループ」を使用して Java で 2D 配列を出力する別の方法を示します。これは Java が提供する特殊なタイプのループで、int[]row は行列内の各行をループします。一方、変数「element」には、行全体の列インデックスに配置された各要素が含まれます。
public class MatrixTraversal {
public static void printMatrix(int matrix[][]){
for (int [] row : matrix)
{
// traverses through number of rows
for (int element : row)
{
// 'element' has current element of row index
System.out.print( element + "\t");
}
System.out.println();
}
}
public static void main(String[] args) {
int[][] matrix = { { 3, 2, 1, 7 },
{ 9, 11, 5, 4 },
{ 6, 0, 13, 17 },
{ 7, 21, 14, 15 } };
printMatrix(matrix);
}
}
出力
3 2 1 7 9 11 5 4 6 0 13 17 7 21 14 15
「Arays.toString()」メソッドの使用
Java のArrays.toString()メソッドは、渡されたすべてのパラメータを単一の配列として変換し、その組み込みメソッドを使用して出力します。試してみるためのダミーの String 2D 配列を作成しました。同じ方法は整数配列にも機能します。ぜひ練習に取り入れてみてください。
import java.util.Arrays;
public class MatrixTraversal {
public static void printMatrix(String matrix[][]){
for (String[] row : matrix) {
// convert each row to a String before printing
System.out.println(Arrays.toString(row));
}
}
public static void main(String[] args) {
String [][] matrix = { { "Hi, I am Karen" },
{ "I'm new to Java"},
{ "I love swimming" },
{ "sometimes I play keyboard"} };
printMatrix(matrix);
}
}
出力
[こんにちは、私はカレンです] [Java は初めてです] [水泳が大好きです] [時々キーボードを弾きます]
GO TO FULL VERSION