一、List的方法和属性

Capacity: 用于获取或设置List可容纳元素的数量。当数量超过容量时,这个值会自动增长。您可以设置这个值以减少容量,也可以调用trin()方法来减少容量以适合实际的元素数目。  
Count: 属性,用于获取数组中当前元素数量  
Item(): 通过指定索引获取或设置元素。对于List类来说,它是一个索引器。  
Add(): 在List中添加一个对象的公有方法  AddRange( ) 公有方法,在List尾部添加实现了ICollection接口的多个元素  
BinarySearch(): 重载的公有方法,用于在排序的List内使用二分查找来定位指定元素.  
Clear(): 在List内移除所有元素  
Contains(): 测试一个元素是否在List内  
CopyTo(): 重载的公有方法,把一个List拷贝到一维数组内  
Exists(): 测试一个元素是否在List内  
Find(): 查找并返回List内的出现的第一个匹配元素 
FindAll(): 查找并返回List内的所有匹配元素  
GetEnumerator(): 重载的公有方法,返回一个用于迭代List的枚举器
Getrange(): 拷贝指定范围的元素到新的List内
IndexOf(): 重载的公有方法,查找并返回每一个匹配元素的索引
Insert(): 在List内插入一个元素
InsertRange(): 在List内插入一组元素
LastIndexOf(): 重载的公有方法,查找并返回最后一个匹配元素的索引
Remove(): 移除与指定元素匹配的第一个元素
RemoveAt(): 移除指定索引的元素
RemoveRange(): 移除指定范围的元素
Reverse(): 反转List内元素的顺序
Sort(): 对List内的元素进行排序
ToArray(): 把List内的元素拷贝到一个新的数组内 
trimToSize(): 将容量设置为List中元素的实际数目

二、List的用法

1、List的基础、常用方法:

(1)、声明:

List<T> mList = new List<T>();
①、T为列表中元素类型,现在以string类型作为例子。

List<string> mList = new List<string>();**List<T> testList =new List<T> (IEnumerable<T> collection);**

②、以一个集合作为参数创建List:

string[] temArr = { "Ha", "Hunter", "Tom", "Lily", "Jay", "Jim", "Kuku", "Locu" };
List<string> testList = new List<string>(temArr);

(2)、添加元素:

①、 添加一个元素

语法: List. Add(T item)

List<string> mList = new List<string>();
mList.Add("John");

②、 添加一组元素  
语法: List. AddRange(IEnumerable<T> collection)

List<string> mList = new List<string>();
string[] temArr = { "Ha","Hunter", "Tom", "Lily", "Jay", "Jim", "Kuku",  "Locu" };
mList.AddRange(temArr);

③、在index位置添加一个元素  
语法: Insert(int index, T item);

List<string> mList = new List<string>();
mList.Insert(1, "Hei");

④、遍历List中元素语法:

foreach (T element in mList)  //T的类型与mList声明时一样
{Console.WriteLine(element);
}

例:

List<string> mList = new List<string>();
...//省略部分代码
foreach (string s in mList)
{Console.WriteLine(s);
}

(3)、删除元素:

①、删除一个值  
语法:List. Remove(T item)

mList.Remove("Hunter");

②、 删除下标为index的元素  
语法:List. RemoveAt(int index);

mList.RemoveAt(0);

③、 从下标index开始,删除count个元素  
语法:List. RemoveRange(int index, int count);

mList.RemoveRange(3, 2);

(4)、判断某个元素是否在该List中:

语法:List. Contains(T item) 返回值为:true/false

if (mList.Contains("Hunter"))
{Console.WriteLine("There is Hunter in the list");
}
else
{mList.Add("Hunter");Console.WriteLine("Add Hunter successfully.");
}

(5)、给List里面元素排序:

语法: List. Sort () 默认是元素第一个字母按升序

mList.Sort();

(6)、给List里面元素顺序反转:

语法: List. Reverse () 可以与List. Sort ()配合使用,达到想要的效果

mList. Reverse();

(7)、List清空:

语法:List. Clear ()

mList.Clear();

(8)、获得List中元素数目:

语法: List. Count () 返回int值

int count = mList.Count();
Console.WriteLine("The num of elements in the list: " +count);

2、List的进阶、强大方法:本段举例用的List:

string[] temArr = { "Ha","Hunter", "Tom", "Lily", "Jay", "Jim", "Kuku", " "Locu" };
mList.AddRange(temArr);

(1)、List.FindAll方法:检索与指定谓词所定义的条件相匹配的所有元素

语法:public List<T> FindAll(Predicate<T> match);

List<string> subList = mList.FindAll(ListFind); //委托给ListFind函数foreach (string s in subList)
{Console.WriteLine("element in subList: "+s);
}

这时subList存储的就是所有长度大于3的元素。

(2)、List.Find 方法:搜索与指定谓词所定义的条件相匹配的元素,并返回整个 List 中的第一个匹配元素。

语法:public T Find(Predicate<T> match)
Predicate是对方法的委托,如果传递给它的对象与委托中定义的条件匹配,则该方法返回 true。当前 List 的元素被逐个传递给Predicate委托,并在 List 中向前移动,从第一个元素开始,到最后一个元素结束。当找到匹配项时处理即停止。Predicate 可以委托给一个函数或者一个拉姆达表达式:
委托给拉姆达表达式:

    string listFind = mList.Find(name =>  //name是变量,代表的是mList中元素,自己设定{     if (name.Length > 3){return true;}return false;});Console.WriteLine(listFind);     //输出是Hunter

委托给一个函数:

string listFind1 = mList.Find(ListFind);  //委托给ListFind函数
Console.WriteLine(listFind);    //输出是Hunter//ListFind函数
public bool ListFind(string name)
{if (name.Length > 3){return true;}return false;
}

这两种方法的结果是一样的。

(3)、List.FindLast 方法:搜索与指定谓词所定义的条件相匹配的元素,并返回整个 List 中的最后一个匹配元素。

语法:public T FindLast(Predicate<T> match);
用法与List.Find相同。

(4)、List.TrueForAll方法: 确定是否 List 中的每个元素都与指定的谓词所定义的条件相匹配。

语法:public bool TrueForAll(Predicate<T> match);
委托给拉姆达表达式:

bool flag = mList.TrueForAll(name =>
{if (name.Length > 3){return true;}else{return false;}
});
Console.WriteLine("True for all:  "+flag);  //flag值为

委托给一个函数,这里用到上面的ListFind函数:

bool flag = mList.TrueForAll(ListFind);    //委托给ListFind函数
Console.WriteLine("True for all:  "+flag);  //flag值为false

这两种方法的结果是一样的。

(5)List.Take(n)方法:获得前n行,返回值为IEnumetable<T>,T的类型与List<T>的类型一样

IEnumerable<string> takeList=  mList.Take(5);
foreach (string s in takeList)
{Console.WriteLine("element in takeList: " + s);
}

这时takeList存放的元素就是mList中的前5个。

(6)、List.Where方法:检索与指定谓词所定义的条件相匹配的所有元素。跟List.FindAll方法类似。

IEnumerable<string> whereList = mList.Where(name =>
{if (name.Length > 3){return true;}else{return false;}}foreach (string s in subList){Console.WriteLine("element in subList")}

这时subList存储的就是所有长度大于3的元素。

(7)、List.RemoveAll方法:移除与指定的谓词所定义的条件相匹配的所有元素。

语法: public int RemoveAll(Predicate<T> match);

mList.RemoveAll(name =>
{if (name.Length > 3){return true;}else{return false;}
});foreach (string s in mList)
{Console.WriteLine("element in mList:" + s);
}

这时mList存储的就是移除长度大于3之后的元素。

Unity基础——List的用法相关推荐

  1. Unity基础开发之事件函数的执行顺序

    Unity基础开发之事件函数的执行顺序 文章目录 前言 一.Initializtion阶段 Awake() OnEnable() 二.Editor阶段 Reset() OnValidate() 三.第 ...

  2. Unity 面试题汇总(三)Unity 基础相关

    Unity 面试题汇总(三)Unity 基础相关 目录 Unity 面试题汇总(三)Unity 基础相关 0.FSM(状态机).HFSM(分层状态机).BT(行为树)的区别 1.什么是协同程序? 2. ...

  3. python类装饰器详解-Python装饰器基础概念与用法详解

    本文实例讲述了Python装饰器基础概念与用法.分享给大家供大家参考,具体如下: 装饰器基础 前面快速介绍了装饰器的语法,在这里,我们将深入装饰器内部工作机制,更详细更系统地介绍装饰器的内容,并学习自 ...

  4. 第一阶段unity基础

    第一阶段unity基础 引言 注意: 1.重点:1.适用性(什么时候用,怎么用)<记脑子里>  2.作用(能够解决什么问题) 3.定义  4.操作/语法 2.每天练习必须会独立完成 3.形 ...

  5. python装饰器详解-Python装饰器基础概念与用法详解

    本文实例讲述了Python装饰器基础概念与用法.分享给大家供大家参考,具体如下: 装饰器基础 前面快速介绍了装饰器的语法,在这里,我们将深入装饰器内部工作机制,更详细更系统地介绍装饰器的内容,并学习自 ...

  6. arduino: 各种Arduino基础器件的用法图

    arduino: 各种Arduino基础器件的用法图 2013-06-17 13:29:40 分类: LINUX NE555的各种用法 开关.光耦.光敏电阻等的用法 各种LED的用法 蜂鸣器.继电器. ...

  7. Unity基础学习路线

        Unity基础 C#程序设计 第001课初识unity 第002课初始unity场景树_渲染体系_物理体系 第003课初识Unity C#的基本结构_类_成员_类的函数 第004课Unity ...

  8. Unity 基础 之 xml 使用 Office Excel 轻松编辑保存 xml 数据,并解析读取数据

    Unity 基础 之 xml  使用 Office Excel 轻松编辑保存 xml 数据 目录 Unity 基础 之 xml  使用 Office Excel 轻松编辑保存 xml 数据 一.简单介 ...

  9. Unity 基础 之 在 UGUI 上简单实现VideoPlayer视频播放的功能,简单暂停播放/显示视频名称/显示时长/拖拽播放等

    Unity 基础 之 在 UGUI 上简单实现VideoPlayer视频播放的功能,简单暂停播放/显示视频名称/显示时长/拖拽播放等 目录 Unity 基础 之 在 UGUI 上简单实现VideoPl ...

  10. Unity 基础 之 一个点(物体)绕另一个点(物体)旋转的简单封装

    Unity 基础 之 一个点(物体)绕另一个点(物体)旋转的简单封装 目录 Unity 基础 之 一个点(物体)绕另一个点(物体)旋转的简单封装 一.简单介绍 二.实现原理 三.注意事项 四.效果预览 ...

最新文章

  1. 数据挖掘公司D square nv 完成500万欧元B轮融资
  2. java range对象_Java LocalTime range()用法及代码示例
  3. python xpath语法-【python】爬虫: lxml解析库、XPath语法详解
  4. rust领地柜保养物品放什么_门厅柜的样式,只有这四种
  5. BZOJ 1084: [SCOI2005]最大子矩阵【DP】
  6. 思考一个问题:如何重现主从备份失败的案例
  7. 配置 --- vscode自定义代码段Snippets
  8. 年轻有为的老黄2020
  9. [Linux C]递归遍历指定目录,以目录树形式展示
  10. IP过滤-驱动和应用程序通信
  11. lt;转gt;Java转iOS-第一个项目总结(2):遇到问题和解决方案
  12. Python 3.4中文编码
  13. 数据挖掘导论(一):数据挖掘的定义,方法,用途
  14. MPQ文档布局分析[转帖]
  15. 打开计算机文件反应慢怎么解决方法,电脑反应慢怎么解决
  16. 电脑注册表怎么打开?
  17. 杀毒软件工作原理 及 现在主要杀毒技术
  18. 百度DMA+小度App的蓝牙语音解决方案入局
  19. Androidstudio之TextView点击变色
  20. python最难的地方_全国 41611 个景点,程序员用 Python 告诉你哪些地方最值得一游!...

热门文章

  1. 滑动门套滑动门css,CSS 实现滑动门的实例代码
  2. 十四岁如花少女与养父共宿一床
  3. 《C专家编程》之 内存泄漏
  4. 利用Eclipse的TaskList功能进行任务管理
  5. java实现MD5加密的三种方式
  6. 浅谈JS各种宽高(clientHeight、scrollHeight、offsetHeight等)
  7. 医学Meta分析是什么?如何快速完成一篇医学Meta分析,手把手复现
  8. EDI 公开课:EDI 系统集成之数据库方案
  9. 实对称矩阵的特征值求法_机器学习和线性代数 - 特征值和特征向量
  10. 实对称矩阵的特征值求法_【8】实(反)对称矩阵的特征值