読者です 読者をやめる 読者になる 読者になる

(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

Listをシャッフルしたり、ランダムに取得したり、先頭から取り出したり【C#】【拡張メソッド】


このエントリーをはてなブックマークに追加



はじめに

今回はListを便利にする拡張メソッドのご紹介!

拡張メソッドってなんぞやという方は以下の記事をどうぞ。

拡張メソッドとは既存のクラスにメソッドを追加するというものです。




ListExtension

さっそくコードです!



上記のListExtension.csを作成すると、

以下のようにどのListでも追加したメソッドが使えるようになります。

List<int> list = new List<int>(){0123};
list.Shuffle(); 



使い方

では、追加した8種類のメソッドを順に説明していきます。

AddToNotDuplicate

AddToNotDuplicateは重複しないように追加するメソッドです。

使い方は以下の通り。

List<int> list = new List<int>(){0, 1, 2, 3};

list.AddToNotDuplicate (1);//既にリストに存在するので追加されない
list.AddToNotDuplicate (4);//リストに存在しないので追加されるう

foreach (var item in list) {
  Debug.Log (item);
}

0
1
2
3
4



RemoveDuplicate

RemoveDuplicateは重複をなくすメソッドです。

使い方は以下の通り。

List<int> list = new List<int>(){0, 0, 1, 2, 2, 3};

list.RemoveDuplicate ();//0と2が重複しているのでリストから消える

foreach (var item in list) {
  Debug.Log (item);
}

0
1
2
3



Shuffle

Shuffleはリストの中身をランダムに並べるメソッドです。

使い方は以下の通り。

List<int> list = new List<int>(){0, 1, 2, 3};

list.Shuffle();//順番がごちゃごちゃに(毎回変わる)

foreach (var item in list) {
  Debug.Log (item);
}

1
3
2
0



GetAndRemove

GetAndRemoveは指定した番号のものを取得し、リストからなくすメソッドです。

使い方は以下の通り。

List<int> list = new List<int>(){0, 1, 2, 3};

int no = list.GetAndRemove(0);//0番目の要素(0)を取り出しリストからなくす

Debug.Log ("no : " + no.ToString ());
foreach (var item in list) {
  Debug.Log (item);
}

no : 0
1
2
3



Pop

Popは最後に追加したものを取得し、リストからなくすメソッドです。

使い方は以下の通り。

List<int> list = new List<int>(){0, 1, 2, 3};

int no = list.Pop();//最後に追加した要素(3)を取り出し、リストからなくす

Debug.Log ("no : " + no.ToString ());
foreach (var item in list) {
  Debug.Log (item);
}

no : 3
0
1
2



Dequeue

Dequeueは最初に追加したものを取得し、リストからなくすメソッドです。

使い方は以下の通り。

List<int> list = new List<int>(){0, 1, 2, 3};

int no = list.Dequeue();//最初に追加した要素(0)を取り出し、リストからなくす

Debug.Log ("no : " + no.ToString ());
foreach (var item in list) {
  Debug.Log (item);
}

no : 0
1
2
3



GetAtRandom

GetAtRandomはランダムに取得するメソッドです。

使い方は以下の通り。

List<int> list = new List<int>(){0, 1, 2, 3};

int no = list.GetAtRandom();//要素をランダムに取得

Debug.Log ("no : " + no.ToString ());
foreach (var item in list) {
  Debug.Log (item);
}

no : 3
0
1
2
3



GetAndRemoveAtRandom

GetAndRemoveAtRandomはランダムに取得し、リストからなくすメソッドです。

使い方は以下の通り。

List<int> list = new List<int>(){0, 1, 2, 3};

int no = list.GetAndRemoveAtRandom();//要素をランダムに取り出し、リストからなくす

Debug.Log ("no : " + no.ToString ());
foreach (var item in list) {
  Debug.Log (item);
}

no : 1
0
2
3