シロウの日記

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

C# コレクション編 LinkedList HashSet Dictionary part3-3

calendar

reload

こんにちは!シロウです!

今回はList以外のコレクションについて紹介していきます!

LinkedList(双方向連結リスト)

LinkedListは,要素同士がリンクによって結びつけられたListです.

その為,個々の要素を参照したり,変更する事ができません.

また,初期化によって値を設定する事もできないです.

しかし,Listと比べると,要素の追加,挿入,削除が簡単にできます

イメージにするとこんな感じです.

要素の追加,挿入

要素の追加,挿入は,Add系のメソッドを使います.

メソッド 説明
AddFirst 先頭に要素を追加.
AddLast 末尾に要素を追加.
AddBefore 指定した要素の前に追加.
AddAfter 指定した要素の後に追加.

 

 

実行結果

 

AddBefore,AddAfterメソッドの第1引数は,LinkedListNode型を要求しています.

LinkedListNode型は,LinkedListの要素が持つ情報(ノード)です.

なので,直接要素を指定する事ができません.

先頭と末尾の要素は,First,Lastプロパティを使う事で簡単に記述できますが,

それ以外の要素を指定する場合は,Findメソッドを使います.(Findメソッドの戻り値が,LinkedListNode型になります.)

 

 

実行結果

 

要素の削除

要素の削除は,Remove系のメソッドを使います.

メソッド 説明
Remove 指定した要素を削除(最初に見つかった要素)
RemoveFirst 先頭の要素を削除
RemoveLast 末尾の要素を削除

 

 

実行結果

 

HashSet(セット)

HashSetは,要素の順番が存在しません.

つまり,インデックス(要素の番号)がありません.

要素の値の情報しか持たないコレクションです.

どういう物かと言えば,集合をイメージすると考えやすいと思います.(値が散らばっているイメージ)

上記のような特徴なので,要素の有無を比較するメソッドがほとんどです.

メソッド 説明
IsSubsetOf 指定したコレクションのサブセットかどうかを判定する.
IsSupersetOf 指定したコレクションのスーパーセットかどうかを判定する.
Overlaps 指定したコレクション(どれか1つの要素)を含んでいるか判定する.

サブセットは部分集合,スーパーセットは上位集合のことです.

また,これらのメソッドは全てbool型の戻り値を返します.

 

 

 

実行結果

HashSet(1,2,3,4,5)は,List(2,3,4)のサブセットではないのでFalse,

HashSetはListのスーパーセットなのでTrue,

HashSetはListの1つ以上の要素を含んでいるのでTrueを返します.

 

Dictionary(連想配列)

Dictionaryは,インデックスではなく,キーというもので要素を操作します.

連想配列,ハッシュテーブルと呼ぶこともあります.

Disctionaryを宣言する時に,型を2つ指定する必要があります

1つ目の型(左側)がキー,2つ目の型(右側)が値になります.

キーには,文字列や数値などを使う事ができます.

つまり,文字列でも要素を操作する事ができます.

foreachによって列挙はできますが,Keys,Valuesプロパティで,キーか値のどちらかを選択する必要があります.

 

 

実行結果

 

 

今回はここまで!

次回はQueue,Stackについて紹介します!

ここがわかりにくいとかありましたら,遠慮なく質問してください!

この記事をシェアする

コメント

コメントはありません。

down コメントを残す