Listについて

##0.0 はじめに
同じ型のデータをまとめて取り扱うことが出来るList。
配列の場合は追加や削除に手間がかかりますが、Listの場合は動的に変更が可能です。C#にてよく使う機能をまとめてみました。
スクリプトに続けてコンソール画面の表示とそれぞれの簡単な説明があります。







```C#:Test.cs
using System.Collections.Generic;
using UnityEngine;

public class Test : MonoBehaviour {
    List<string> list = new List<string>();
    List<string> anotherList = new List<string>();
    string elements = ""; // 要素表示用

    void Start() {
        

        // 1.0 要素の追加
        list.Add("東京");
        list.Add("名古屋");
        list.Add("大阪");
        list.Add("福岡");

        // list内の要素をすべてelementsに格納
        foreach (string str in list) {
            elements += str + ", ";
        }
        // コンソール画面にlist内の要素をすべて表示
        Debug.Log("1.0 要素の追加後ーー＞ " + elements);
        elements = ""; // 初期化


        
        // 2.1 要素名で削除
        list.Remove("大阪");

        // list内の要素をすべてelementsに格納
        foreach (string str in list) {
            elements += str + ", ";
        }
        // コンソール画面にlist内の要素をすべて表示
        Debug.Log("2.1 要素名で削除後ーー＞ " + elements);
        elements = ""; // 初期化



        // インデックス番号で削除
        list.RemoveAt(1);

        // list内の要素をすべてelementsに格納
        foreach (string str in list) {
            elements += str + ", ";
        }
        // 2.2 コンソール画面にlist内の要素をすべて表示
        Debug.Log("2.2 インデックス番号で削除後ーー＞ " + elements);
        elements = ""; // 初期化



        // 2.3 すべての要素を削除
        list.Clear();

        // コンソール画面にlist内の要素の数を表示
        Debug.Log("2.3 すべて削除後の要素数ーー＞ " + list.Count);



        // 要素追加
        list.Add("りんご");
        list.Add("みかん");
        list.Add("ばなな");
        list.Add("もも");


        // 3.0 要素の並べ替え
        list.Sort();

        // list内の要素をすべてelementsに格納
        foreach (string str in list) {
            elements += str + ", ";
        }
        // コンソール画面にlist内の要素をすべて表示
        Debug.Log("3.0 要素の並べ替え後ーー＞ " + elements);
        elements = ""; // 初期化



        // 4.1 インデックス番号を取得する
        Debug.Log("4.1 インデックス番号取得(りんご)ーー＞ " + list.IndexOf("りんご"));



        // 4.2 値が含まれているかを判定
        Debug.Log("4.2 値が含まれているか(もも)ーー＞ " + list.Contains("もも"));
        Debug.Log("4.2 値が含まれているか(なし)ーー＞ " + list.Contains("なし"));



        // 5.0 値を入れての初期化
        list = new List<string>() {"算数", "国語", "理科" };

        // list内の要素をすべてelementsに格納
        foreach (string str in list) {
            elements += str + ", ";
        }
        // コンソール画面にlist内の要素をすべて表示
        Debug.Log("5.0 値を入れての初期化後ーー＞ " + elements);
        
        // 6.0 複数の要素を一度にまとめて追加したい場合
        elements = "";
        anotherList.AddRange(list);
        anotherList.AddRange(list); // 2回入れている
        foreach (string str in anotherList) {
            elements += str + ", ";
        }
        Debug.Log("6.0 複数の要素を一度にまとめて追加の後ーー＞ " + elements);
    }
}

```
















![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352037/3a3e067b-93e0-500c-f650-bac0d726c1b5.png)























##1.0 要素の追加
list.Add()
引数に追加したい要素を入れます。






##2.0 要素の削除
削除の方法はいくつかあります。


###2.1 要素名を指定しての削除
list.Remove()
引数に削除したい要素名を入れます。




###2.2 インデックスを指定しての削除
list.RemoveAt()
引数に削除したいインデックス番号(int)を入れます。




###2.3 すべての要素の削除
list.Clear()
要素数は0になります。

👍**ポイント!!**
list.Countで要素数を調べることができます。





##3.0 要素の並べ替え　ソート 
list.Sort()
Listの要素を昇順に並び替えます。






##4.0 要素検索


###4.1 インデックス番号を取得する
list.IndexOf()
引数は検索したい要素名。
返り値で検索した要素のインデックスを取得する。






###4.2 値が含まれているかを判定する
list.Contains()
引数は検索したい要素名。
値が含まれているかを判定する方法、返り値はTrue/False





##5.0 値を入れての初期化
後ろに{}を付けてそのなかに値を入れます。
List<string> test = new List<string>() { "値1", "値2", "値3" };

👍**ポイント!!**
()省略可

##6.0 複数の要素を一度にまとめて追加したい場合
list.AddRange(array);
array部にはListでも配列でも取り扱い可能です。


##7.0 要素の一部をListとして取り出す方法
list.GetRange(int index, int count)を使用します。

第一引数は切り取り部分のスタートとなるindex番号

第二引数は切り取りたい個数

👍**ポイント!!**
引数(2,3)の場合は要素番号2から要素番号4までの3要素を抜き出します。