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();
}