Unity List 相关

顺序复制同类型的List

复制代码
list2 = new List<T>(list1);

复制代码
list2.Clear();
list1.ForEach(item => list2.Add(item));

倒序复制同类型的List

复制代码
list2 = new List<T>(list1);//顺序复制
list2.Reverse();//颠倒list

乱序复制同类型的List

复制代码
List<T> list2 = new List<T>(list1);
List<T> random = new List<T>();
int count = list2.Count;
for (; random.Count < count;)
{
    int index = UnityEngine.Random.Range(0, list2.Count);
    random.Add(list2[index]);
    list2.Remove(list2[index]);
}

比较两个List 的值是否相同

复制代码
if(list1.Except(list2).Count() == 0 && list2.Except(list1).Count() == 0)
{
    //相同
}

从List 中随机选取n 个参数组成新的List

复制代码
if (list1.Count <= n)
{
    list1.ForEach(item => list2.Add(item));
}

List<int> indexs = new List<int>();
for (int i = 0; i < list1.Count; i++)
{
    indexs.Add(i);
}

for (int i = 0; i < n; i++)
{
    int randomIndex = Random.Range(0, indexs.Count);
    list2.Add(list1[indexs[randomIndex]]);
    indexs.RemoveAt(randomIndex);
}

拼接同类型的List

复制代码
list1.AddRange(list2);

复制代码
combinedList = list1.Concat(list2).ToList();

复制代码
foreach (var item in list2)
{
    list1.Add(item);
}