Listを初期化する。
GameObject型のリスト
List<GameObject> list = new List<GameObject>();
int型のリスト
List<int> list = new List<int>();
int型の多次元配列
List<List<int>> results = new List<List<int>>();
Listに要素を追加する
*
に初期化の際に宣言した型の要素を入れる
list.Add(*);
別の型の配列をListに変換する
List<int> list = new List<int>();
int[] numbers = Enumerable.Range (0, 10).ToArray ();
list.AddRange(numbers);
Listの要素を取得する
i
番目の要素を取り出す
list[i];
Listの要素を削除する
i
番目の要素を削除する
list.RemoveAt(i);
Listの要素を全て削除する
list.Clear();
Listの要素の数を取得する
Length
ではなくCount
なので注意
int count = list.Count;
配列に変換する
list.ToArray();
List内の要素の有無を確認
if ( data.Contains(*) ) {
// trueの場合
}
連番のListを作成する
System.Linq
を読み込むと配列をList
型に変換するToList()
が使えるようになる。
using System.Linq;
List<int> list = Enumerable.Range(0, 100).ToList();
for文の書き方
for文
for (int i = 0; i < list.Count; i++)
{
print(list[i]);
}
foreach文
foreach (int i in list)
{
print(i);
}
ForEach文
list.ForEach(i =>
{
print(i);
});
Whereで条件にあった要素を抜き出す
System.Linq
を読み込むとWhere
で条件にあった要素の抽出ができるようになる。
List<int> output = list.Where(x => x % 2 == 0).ToList();//0,2,4,6,8...
こんな感じで上書きするのも可
list = list.Where(x => x % 2 == 0).ToList();//0,2,4,6,8...
Existsで条件にあった要素があるかどうかを調べる
//要素に10が存在するかどうか
bool hasInts = list.Exists(i => i.Equals(10));
Findで条件にあった最初の要素を取得する
int output = list.Find(i => i > 10);
FindAllで条件にあった要素を全て取得する
List<int> output = list.FindAll(i => i > 10).ToList();
RemoveAllで条件にあった要素を全て削除する
int output = list.RemoveAll(i => i > 10);
print(output);//削除した要素の数が返ってくる
Selectで要素に一律に処理を行う
List<int> output = list.Select(x => x * 2).ToList(); //2,4,6,8,10...
SelectManyで入れ子になっているリスト要素を平坦化する
//入れ子構造のリストA+Bを作成する
List<int> listA = Enumerable.Range(0, 100).ToList();
List<int> listB = Enumerable.Range(1000, 1100).ToList();
List<List<int>> listWrapper = new List<List<int>>();
listWrapper.Add(listA);
listWrapper.Add(listB);
//1つのリストにする
List<int> output = listWrapper.SelectMany(i => i).ToList();
Listの中身をシャッフルする
public static class ListExtension
{
/// <summary>
/// ランダムに並び替え
/// </summary>
public static List<T> Shuffle<T>(this List<T> self)
{
for (int i = 0; i < self.Count; i++)
{
T temp = self[i];
int randomIndex = Random.Range(0, self.Count);
self[i] = self[randomIndex];
self[randomIndex] = temp;
}
return self;
}
}
Listの中身をランダムに取得
public static class ListExtension
{
public static List<T> GetRandom<T>(this List<T> self)
{
return self[UnityEngine.Random.Range(0, self.Count)];
}
}
nullの要素を削除する
public static class ListExtension
{
/// <summary>
/// nullの要素を削除
/// </summary>
public static List<T> Compact<T>(this List<T> self)
{
return self.Where(i => i != null).ToList();
}
}