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. POJ Oulipo (KMP)

    题目大意 : 在一个字符串中找出目标单词的个数 代码: #include<iostream> #include<cstdio> #include<cstdlib> ...

  2. Zigzag Iterator 解答

    Question Given two 1d vectors, implement an iterator to return their elements alternately. For examp ...

  3. easyhadoop初识以及各种问题

    版本:easyhadoop 1.2.1,操作系统:Centos 6.4: 首先,我要说的是要用对版本,这点很重要.我使用ubuntu12.04 64bit 的虚拟机是不行的,安装直接报错.所以就下载了 ...

  4. 【转】网络视频监控P2P解决方案

    一.摘要 本文分析了日益增长的民用级别家庭和个人网络视频监控市场的需求特点,并给出了一种经济可行易于大规模部署的P2P解决方案. 由于篇幅有限,本文只给出了方案的思路,未对更深入的技术细节做详细的论述 ...

  5. 学习php常用算法

    <?php /*学用php算法*/ /*1.冒泡法 *思路分析:在要排序的一组数中,对当前还未排好的序列, *从前往后对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒. *即,每 ...

  6. PHP计算一个目录文件大小方法

    <?php $dirfile='../hnb'; /** *计算一个目录文件大小方法 *$dirfile:传入文件目录名 **/ function dirSize($dirfile) { $di ...

  7. eclipse配置maven + 创建maven项目

        登录|注册     努力+坚持,而且还很年轻   目录(?)[+] 在现实的企业中,以低成本.高效率.高质量的完成项目,不仅仅需要技术大牛,企业更加需要管理大牛,管理者只懂技术是远远不够的.当 ...

  8. linux下查看文件及目录个数

    linux下查看文件及目录个数1.查看当前文件和目录总数(不包括子目录):ls -l | wc -l 2.查看当前目录下文件个数(不包括子目录):ls -l |grep "^-"| ...

  9. Repeater数据绑定和操作

    Repeater使用详细指南 ASP.NET WebForm开发中尽量少用系统提供的runat="server"的服务器控件,尤其像GridView之类的“重量级”武器,自动生成的 ...

  10. XML格式导出Excel

    下面介绍一种导出Excel的方法: 此方法不需要在服务器上安装Excel,采用生成xml以excel方式输出到客户端,可能需要客户机安装excel,所以也不会有乱七八糟的权限设定,和莫名其妙的版本问题 ...