スポンサーリンク
※サイト運営にサーバーは必須です※
~ ロリポップ! はコスパのよい初心者向けサーバーです~
目次
ジャグ配列とは
ジャグ配列とは、配列の中の要素が配列となっている配列です。
そのため、「配列の配列」と呼ばれることがあります。
ジャグ配列の要素(つまり、配列の中の配列)において、要素数が異なっていても問題ありません。
配列の宣言と初期化の仕方
ジャグ配列の宣言と初期化は以下のように行うことができます。
ここでは、以下のような表をジャグ配列で扱うことを考えます。
名前 | 性別 | 特技 | |
[0] | [1] | [2] | |
[0] | 浅野 | 男 | 剣道 |
[1] | 貝塚 | ||
[2] | 坂上 | 女 | |
[3] | 高原 | 男 | 野球 |
[4] | 中条 |
※対応するインデックス
[0] | [1] | [2] | |
[0] | [0][0] | [0][1] | [0][2] |
[1] | [1][0] | ||
[2] | [2][0] | [2][1] | |
[3] | [3][0] | [3][1] | [3][2] |
[4] | [4][0] |
※このような行の要素がバラバラな場合にジャグ配列は有効です。
パターン1
string[][] student_list = {
new string[]{ “浅野”, “男”, “剣道” },
new string[]{ “貝塚” },
new string[]{ “坂上”, “女” },
new string[]{ “高原”, “男”, “野球” },
new string[]{ “中条”}
};
パターン1a
string[][] student_list = {
new string[3]{ “浅野”, “男”, “剣道” },
new string[1]{ “貝塚” },
new string[2]{ “坂上”, “女” },
new string[3]{ “高原”, “男”, “野球” },
new string[1]{ “中条”}
};
パターン2
string[][] student_list = new string[5][] {
new string[]{ “浅野”, “男”, “剣道” },
new string[]{ “貝塚” },
new string[]{ “坂上”, “女” },
new string[]{ “高原”, “男”, “野球” },
new string[]{ “中条”}
};
パターン2a
string[][] student_list = new string[5][] {
new string[3]{ “浅野”, “男”, “剣道” },
new string[1]{ “貝塚” },
new string[2]{ “坂上”, “女” },
new string[3]{ “高原”, “男”, “野球” },
new string[1]{ “中条”}
};
パターン3
string[][] student_list = new string[5][];
student_list[0] = new string[] { “浅野”, “男”, “剣道” };
student_list[1] = new string[] { “貝塚” };
student_list[2] = new string[] { “坂上”, “女” };
student_list[3] = new string[] { “高原”, “男”, “野球” };
student_list[4] = new string[] { “中条” };
パターン3a
string[][] student_list = new string[5][];
student_list[0] = new string[3] { “浅野”, “男”, “剣道” };
student_list[1] = new string[1] { “貝塚” };
student_list[2] = new string[2] { “坂上”, “女” };
student_list[3] = new string[3] { “高原”, “男”, “野球” };
student_list[4] = new string[1] { “中条” };
パターン4
string[][] student_list;
student_list = new string[5][];
student_list[0] = new string[] { “浅野”, “男”, “剣道” };
student_list[1] = new string[] { “貝塚” };
student_list[2] = new string[] { “坂上”, “女” };
student_list[3] = new string[] { “高原”, “男”, “野球” };
student_list[4] = new string[] { “中条” };
パターン4a
string[][] student_list;
student_list = new string[5][];
student_list[0] = new string[3] { “浅野”, “男”, “剣道” };
student_list[1] = new string[1] { “貝塚” };
student_list[2] = new string[2] { “坂上”, “女” };
student_list[3] = new string[3] { “高原”, “男”, “野球” };
student_list[4] = new string[1] { “中条” };
パターン5
string[][] student_list = new string[5][];
student_list[0] = new string[3];
student_list[0][0] = “浅野”;
student_list[0][1] = “男”;
student_list[0][2] = “剣道”;
student_list[1] = new string[1];
student_list[1][0] = “貝塚”;
student_list[2] = new string[2];
student_list[2][0] = “坂上”;
student_list[2][1] = “女”;
student_list[3] = new string[3];
student_list[3][0] = “高原”;
student_list[3][1] = “男”;
student_list[3][2] = “野球”;
student_list[4] = new string[1];
student_list[4][0] = “中条”;
パターン5′
string[][] student_list;
student_list = new string[5][];
student_list[0] = new string[3];
student_list[0][0] = “浅野”;
student_list[0][1] = “男”;
student_list[0][2] = “剣道”;
student_list[1] = new string[1];
student_list[1][0] = “貝塚”;
student_list[2] = new string[2];
student_list[2][0] = “坂上”;
student_list[2][1] = “女”;
student_list[3] = new string[3];
student_list[3][0] = “高原”;
student_list[3][1] = “男”;
student_list[3][2] = “野球”;
student_list[4] = new string[1];
student_list[4][0] = “中条”;
パターン1~2はジャグ配列の宣言と初期化を同時に行っています。
パターン3~5はジャグ配列の宣言と初期化を分けて行っています。
特に、パターン5(5′)は配列の中の配列の各要素に対して、初期値を入れています。
配列の要素を出力
配列の中の配列の要素を出力したい場合は以下のように、ループ文が2つ必要になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Jagged03 { class Program { static void Main(string[] args) { string[][] student_list = { new string[]{ "浅野", "男", "剣道" }, new string[]{ "貝塚" }, new string[]{ "坂上", "女" }, new string[]{ "高原", "男", "野球" }, new string[]{ "中条"} }; for (int i = 0; i < student_list.Length; i++) { for (int j = 0; j < student_list[i].Length; j++) { Console.Write(student_list[i][j] + ":"); } Console.WriteLine(); Console.WriteLine("------------"); } } } } |
student_list.Lengthはジャグ配列の長さ(要素数)を意味します。ここでは値は5になります。
student_list[i].Lengthは配列の中の配列の長さ(要素数)を意味します。ここでは、配列の長さに応じて、値は1~3を取ります。
実行結果
浅野:男:剣道:
————
貝塚:
————
坂上:女:
————
高原:男:野球:
————
中条:
————
2次元以上の配列を要素に取る
ジャグ配列は2次元の配列を要素として扱うことができます。
例えば、以下のようなジャグ配列を宣言することができます。
int[][,] jagged_array = new int[3][,]
{
new int[,]{ {2,5}, {77,30}, {22,55} },
new int[,]{ {8,10} },
new int[,]{ {32,53}, {7,3} }
};
関連記事
~ギャンブルに絶対儲かる必勝法があるのだろうか?~
私(サイト主)はこの疑問に対して非常に興味を持ち、プログラミングで検証してみました。
このサイトを応援してもいいかなと思う人はぜひとも購入を検討してみてください。