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. 【Android】使用BaseAdapter实现复杂的ListView

    步骤 使用BaseAdapter实现复杂的ListView的步骤: 1. 数据你要准备好 List getData(). 2. 继承ListActivity专有屏,不再需要setContentView ...

  2. 修改和获取web.config或app.config文件appSettings配置节中的Add里的value属性 函数

    1: /// <summary> 2: /// 修改web.config或app.config文件appSettings配置节中的Add里的value属性 3: /// </summ ...

  3. OpenWrt openssl library

    Please install the openssl library (with development headers) sudo apt-get install libssl; rite fail ...

  4. android中的本地定时推送到通知栏

    一.使用系统定义的Notification 以下是使用示例代码: import android.app.Notification; import android.app.NotificationMan ...

  5. RCU 机制 [转IBM]

    2005 年 7 月 01 日 本文详细地介绍了 Linux 2.6 内核中新的锁机制 RCU(Read-Copy Update) 的实现机制,使用要求与典型应用. 一.引言 众所周知,为了保护共享数 ...

  6. fcitx-rime添加五笔/五笔拼音

    简介 Rime,全名:中州韵输入法引擎,它不仅仅是一个输入法,也是一个输入法算法框架.Rime 支持拼音.双拼.注音.五笔和仓颉等音码.形码输入法. 安装 Debian sid 用户可以使用下面命令安 ...

  7. UIScreen类

    CGRect screenBounds = [ [UIScreen mainScreen]bounds];//返回的是带有状态栏的Rect NSLog(@"%@", NSStrin ...

  8. Binarized Neural Networks_ Training Neural Networks with Weights and Activations Constrained to +1 or −1

    转载请注明出处: http://www.cnblogs.com/sysuzyq/p/6248953.html by 少侠阿朱

  9. 【剑指offer】替换字符串中的空格

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/25002199 剑指offer上的第四道题目,在九度OJ上測试通过,但还是有些问题.由于是用 ...

  10. Ubuntu14.04配置cuda-convnet

    转载请注明:http://blog.csdn.net/stdcoutzyx/article/details/39722999 在上一个链接中,我配置了cuda,有强大的GPU,自然不能暴殄天物,让资源 ...