List<T>类是ArrayList的泛型等效版本,两者功能相似。它实现了6个接口,实际上市对应的3对。

1、IEnumerable<T>和IEnumerable

2、ICollection<T>和ICollection

3、IList<T>和IList

  使用List<T>有很多好处。比如类型安全和可以存储引用类型以及值类型的数据,避免了使用ArrayList存储值类型数据时的装箱拆箱操作。以及在存储引用类型时的显示类型转化难操作,有一定的性能优势。

  List<T>类的一些重要特性如下:

  1、可以添加null值到集合中。

  2、允许集合中的元素重复。

  3、可以使用整数索引访问此集合中的元素,索引从零开始。

  在创建List<T>的对象时,没有指定List<T>列表的容量大小,则默认的容量大小是零,但是一旦有数据加入到列表,则列表的容量就会扩展到4;第5个加入时就会扩展到8;第9个加入就扩展到16,如此类推。列表容量总是成倍地增长。扩展时需要重新申请内存,这样会影响效率,如果事先知道元素的数目,或者可能的数目(尽量大的估算),建议使用一个初始化容量来实例化List<T>对象。

  构造方法:

  1、List();  使用默认的初始容量初始化一个空的实例。

  2、List(IEnumerable<T> collection)  创建一个实例,并从指定的集合中复制元素到新实例中。

  3、List(Int32)  使用指定的容量初始化一个空的实例。

 

  属性              说明

  Capacity             获取或设置该内部数据结构在不调整大小的情况下能够容纳的元素总数。 
  Count              获取 List<(Of <(T>)>) 中实际包含的元素数。 
  Item               获取或设置指定索引处的元素。

  方法

Add                将对象添加到 List<(Of <(T>)>) 的结尾处。 
AddRange             将指定集合的元素添加到 List<(Of <(T>)>) 的末尾。 
AsReadOnly            返回当前集合的只读 IList<(Of <(T>)>) 包装。 
BinarySearch           已重载。 使用对分检索算法在已排序的 List<(Of <(T>)>) 或它的一部分中查找特定元素。 
Clear               从 List<(Of <(T>)>) 中移除所有元素。 
Contains             确定某元素是否在 List<(Of <(T>)>) 中。 
ConvertAll<(Of <(TOutput>)>)  将当前 List<(Of <(T>)>) 中的元素转换为另一种类型,并返回包含转换后的元素的列表。 
CopyTo              已重载。 将 List<(Of <(T>)>) 或它的一部分复制到一个数组中。 
Exists                确定 List<(Of <(T>)>) 是否包含与指定谓词所定义的条件相匹配的元素。 
Find               搜索与指定谓词所定义的条件相匹配的元素,并返回整个 List<(Of <(T>)>) 中的第一个匹配元素。 
FindAll              检索与指定谓词定义的条件匹配的所有元素。 
FindIndex             已重载。 搜索与指定谓词所定义的条件相匹配的元素,返回 List<(Of <(T>)>) 或它的一部分中第一个匹配项的从零开始的索引。 
FindLast             搜索与指定谓词所定义的条件相匹配的元素,并返回整个 List<(Of <(T>)>) 中的最后一个匹配元素。 
FindLastIndex          已重载。 搜索与指定谓词所定义的条件相匹配的元素,返回 List<(Of <(T>)>) 或它的一部分中最后一个匹配项的从零开始的索引。 
ForEach             对 List<(Of <(T>)>) 的每个元素执行指定操作。 
GetEnumerator          返回循环访问 List<(Of <(T>)>) 的枚举数。 
GetRange            创建源 List<(Of <(T>)>) 中的元素范围的浅表副本。 
IndexOf             已重载。 返回 List<(Of <(T>)>) 或它的一部分中某个值的第一个匹配项的从零开始的索引。 
Insert              将元素插入 List<(Of <(T>)>) 的指定索引处。 
InsertRange           将集合中的某个元素插入 List<(Of <(T>)>) 的指定索引处。 
LastIndexOf           已重载。 返回 List<(Of <(T>)>) 或它的一部分中某个值的最后一个匹配项的从零开始的索引。 
Remove             从 List<(Of <(T>)>) 中移除特定对象的第一个匹配项。 
RemoveAll             移除与指定的谓词所定义的条件相匹配的所有元素。 
RemoveAt             移除 List<(Of <(T>)>) 的指定索引处的元素。 
RemoveRange           从 List<(Of <(T>)>) 中移除一定范围的元素。 
Reverse             已重载。 将 List<(Of <(T>)>) 或它的一部分中元素的顺序反转。 
Sort               已重载。 对 List<(Of <(T>)>) 或它的一部分中的元素进行排序。 
ToArray             将 List<(Of <(T>)>) 的元素复制到新数组中。 
TrimExcess            将容量设置为 List<(Of <(T>)>) 中的实际元素数目(如果该数目小于某个阈值)。 
TrueForAll            确定是否 List<(Of <(T>)>) 中的每个元素都与指定的谓词所定义的条件相匹配。

        static void Main(string[] args)
{
List<string> list = new List<string>(4);
list.Add("你好");
list.Add("还不错");
list.Add("对不起");
list.Add("我爱你");
foreach (string str in list)
{
Console.WriteLine(str);
} Console.ReadKey();
}

List<T>类的更多相关文章

  1. Java类的继承与多态特性-入门笔记

    相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...

  2. C++ 可配置的类工厂

    项目中常用到工厂模式,工厂模式可以把创建对象的具体细节封装到Create函数中,减少重复代码,增强可读和可维护性.传统的工厂实现如下: class Widget { public: virtual i ...

  3. Android请求网络共通类——Hi_博客 Android App 开发笔记

    今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...

  4. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库

    在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...

  5. ASP.NET Core 折腾笔记二:自己写个完整的Cache缓存类来支持.NET Core

    背景: 1:.NET Core 已经没System.Web,也木有了HttpRuntime.Cache,因此,该空间下Cache也木有了. 2:.NET Core 有新的Memory Cache提供, ...

  6. .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类

    .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类 0x00 为什么要引入扩展方法 有的中间件功能比较简单,有的则比较复杂,并且依赖其它组件.除 ...

  7. Java基础Map接口+Collections工具类

    1.Map中我们主要讲两个接口 HashMap  与   LinkedHashMap (1)其中LinkedHashMap是有序的  怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...

  8. PHP-解析验证码类--学习笔记

    1.开始 在 网上看到使用PHP写的ValidateCode生成验证码码类,感觉不错,特拿来分析学习一下. 2.类图 3.验证码类部分代码 3.1  定义变量 //随机因子 private $char ...

  9. C# 多种方式发送邮件(附帮助类)

    因项目业务需要,需要做一个发送邮件功能,查了下资料,整了整,汇总如下,亲测可用- QQ邮箱发送邮件 #region 发送邮箱 try { MailMessage mail = new MailMess ...

  10. .NET平台开源项目速览(18)C#平台JSON实体类生成器JSON C# Class Generator

    去年,我在一篇文章用原始方法解析复杂字符串,json一定要用JsonMapper么?中介绍了简单的JSON解析的问题,那种方法在当时的环境是非常方便的,因为不需要生成实体类,结构很容易解析.但随着业务 ...

随机推荐

  1. Win7/Win8/Win8.1众多版本,我该选择哪个?

    当你要下载Win7或者Win8/8.1镜像时,是不是被Windows版本种类给吓着了?到底该选择哪种版本的?其实,大多数人用的就那一两个版本,这也是推荐选择的版本,请看快速通道.如果你想了解的更多一点 ...

  2. Windows资源文件里VarFileInfo的Translation(EXE的语言描述信息)

    /* The following line should only be modified for localized versions. */ /* It consists of any numbe ...

  3. 做一个有理想的IT人

    前段时间一直以来都在思考生命的价值的问题,一直在想人的一生的追求是什么.在这个物欲横流的社会,对人的价值的定义只是在财富积累的多少,这个是大多数人所认为的.但人的一生顶多百年,百年之后这些虚荣划归为尘 ...

  4. 学习javascript基础知识系列第三节 - ()()用法

    总目录:通过一段代码学习javascript基础知识系列 注意: 为了便于执行和演示,建议使用chrome浏览器,按F12,然后按Esc(或手动选择)打开console,在console进行执行和演示 ...

  5. Yii2 分页类的扩展和listview引用

    Yii2 本身提供了不错分页选项供用户设置,但是实际项目中我们往往需要复杂一些的分页样式,例如下图所示的效果,上下翻页可用和不可用均用图标来替换.

  6. ecshop 管理员不需要旧密码

  7. iOS程序员对算法的要求

    算法和数据结构(鉴于二者的关联,以下统称算法),对于程序员的重要性一直是个具有争议性的话题.有一些程序员内心对算法有着天然的排斥,面试当中一旦考察算法知识,会被不少程序员吐槽,但有部分公司又一直在坚持 ...

  8. [转]Laravel 4之控制器

    Laravel 4之控制器 http://dingjiannan.com/2013/laravel-controller/ 控制器 通常Laravel控制器文件放在app/controllers/目录 ...

  9. BOOST 线程完全攻略 - 结束语

    modulethread扩展多线程破解通讯 全文介绍了3个boost::thread的扩展类,希望能给大家书写多线程代码带来便捷. thread -> controlled_module_ex ...

  10. asp.net 通过js调用webService注意

    通过JavaSrcipt调用WebService格式: //通过SricptManager 的,services标签添加web服务引用 <asp:ScriptManager runat=&quo ...