半人前プログラマーの技術談議

開発した物と,C#を入門者向けに解説した記事を書いています!

【C# コレクション】多次元List part3-☆1

calendar

reload

こんにちは!シロウです

コレクション編の番外partになります!

今回は多次元List,Listの要素が配列の場合,Listの配列を扱っていきます!

多次元List

Listは多次元にする事はできません

しかし,配列にも多次元配列があるように,Listでも同じような機能を持たせる事ができます.

厳密に言うと,そもそもListや配列はクラスであり,Listの<>内には,クラスも入れる事ができると説明しました.(part3-1)

つまり,この性質から<>内にListを入れる事で2次元Listのように扱う事ができます.(多次元の場合は,更に入れ子を作ります.)

多次元Listは,次のように記述します.

例えば,int型の2次元Listは次のように記述されます.

 

では,いくつかメソッドを使ったサンプルプログラムを貼るので,どのように使うか見てみましょう.

 

 

実行結果

 

コメントアウトには,いくつか書きましたが,

最初に,DoubleListの初期化の所ですね.

List<int>型のListなので,DoubleListの要素はList<int>になります.

わかりにくいと思うので,通常のListを思い出してみてください.

List<int>のlistの要素が,{ 1, 2, 3 }のint型の整数であるように,List<List<int>>のDoublelistでは,{ list1, list2, list3 }のList<int>型のリストであるということです.

Addに関しては,listを追加しているだけなのでわかりやすいと思います.

foreachの部分は,1度1次元のListに戻して(列挙して)から,更にforeachで1次元のListの要素を列挙しています.

 

もう1つサンプルプログラムを貼ります.

 

実行結果

 

参照する時は,従来のListと同じように[番号]を付けます.

慣れてくると,1次元のListを扱っていた時と何も変わらないと思います.

 

Listの要素が配列

Listの要素が配列の時を考えてみます.

記述は次のようになります.

例えば,int型の配列を要素にすると次のように記述します.

 

 

実行結果

 

多次元Listとの違いは,それぞれのListにAddメソッドで後から要素を加える事ができるのに対して,配列の場合はできません.(配列を追加する事はできます.)

多次元配列との違いは,2次元以降の要素数を任意に設定する事ができるということです.

例えば,

このように宣言した2次元配列は,2×3 = 6個 の要素を持つ配列です.

細かく見ていくと,

array[0, 0],array[0, 1],array[0, 2],

array[1, 0],array[1, 1],array[1, 2]

となります.

なので,多次元配列では,要素数を全て同じにする必要がありました.

これらの事を気にせず宣言できるのが,Listの要素が配列の場合です.

 

Listの配列

Listを配列で宣言した場合を考えてみます.

記述は次のようになります.

例えば,int型のListの要素を3つ持つ配列は次のように記述します.

 

 

実行結果

 

こちらは,1次元目が配列になるので,listarrayに要素(List)を追加する事ができません.(Listのメソッドが使えない.)

 

まとめ

今回紹介した内容は,List以外の他のコレクションでも同様に扱う事ができます.

今回の内容は結構複雑なので,慣れるまで大変かもしれません.

Javaでは,デフォルトで多次元配列は要素数を合わせなくても使えたりするんですけどね;;

 

 

今回はここまで!

次回はSortedListについて紹介します.