在C#中, List是一个通用集合,用于以列表形式存储元素或对象,并且在System.Collection.Generic命名空间下定义。它提供了与ArrayList相同的功能,但是tere只是一个不同,即列表是泛型的,而ArrayList是非泛型的集合。它本质上是动态的,意味着列表的大小会根据需要增加。
重要事项:
- List类实现ICollection
,IEnumerable ,IList ,IReadOnlyCollection ,IReadOnlyList ,ICollection,IEnumerable和IList接口。 - 它可以接受null作为引用类型的有效值,并且允许重复的元素。
- 如果计数等于容量,则列表的容量通过重新分配内部数组自动增加。在添加新元素之前,现有元素将被复制到新数组。
- 默认情况下,列表中存在的元素不会进行排序,并且元素从零开始就可以访问。
如何建立清单?
List类具有3个用于创建列表的构造函数,其构造函数如下:
- List
(): 此构造函数用于创建List类的实例,该实例为空并具有默认初始容量。 - List
(IEnumerable): 此构造函数用于创建List类的实例,该实例包含从指定集合中复制的元素,并具有足够的容量来容纳复制的元素数量。 - List
(Int32): 此构造函数用于创建List类的实例,该实例为空并具有指定的初始容量。
让我们看看如何使用List
步骤1:借助using关键字,在程序中包含System.Collection.Generics命名空间。
using System.Collections.Generic;
步骤2:使用List
List list_name = new List();
步骤3:如果要在列表中添加元素,则List
- Add(T):此方法用于将对象添加到List
的末尾。 - AddRange(IEnumerable
): 此方法用于将指定集合的元素添加到List的末尾。
注意:您也可以使用集合初始化程序添加元素。如下例所示:
例子:
// Creating List using List class
// and Adding elements using the
// Collection initializers
List
步骤4:您可以使用以下方式访问列表的元素:
- 使用foreach循环:您可以使用foreach循环来访问列表的元素/对象。
例子:
// Accessing elements of my_list
// Using foreach loop
foreach(int a in my_list)
{
Console.WriteLine(a);
} - 使用ForEach()方法:此方法用于对List
的 每个元素执行指定的操作。例子:
// Accessing elements of my_list
// Using ForEach method
my_list.ForEach(a = > Console.WriteLine(a)); - 使用for循环:您可以使用for循环访问列表的元素/对象。
例子:
// Accessing elements of my_list
// Using for loop
for (int a = 0; a < my_list.Count; a++)
{
Console.WriteLine(my_list[a]);
} - 使用索引器:您可以使用索引器来访问列表的元素/对象。
例子:
// Accessing elements of my_list
// Using indexers
Console.WriteLine(my_list[3]);
Console.WriteLine(my_list[4]);
例子:
// C# program to illustrate how
// to create a list
using System;
using System.Collections.Generic;
class GFG {
// Main Method
static public void Main()
{
// Creating list using List class
// and List() Constructor
List my_list = new List();
// Adding elements to List
// Using Add() method
my_list.Add(1);
my_list.Add(10);
my_list.Add(100);
my_list.Add(1000);
my_list.Add(10000);
my_list.Add(100000);
my_list.Add(1000000);
// Accessing elements of my_list
// Using foreach loop
foreach(int a in my_list)
{
Console.WriteLine(a);
}
}
}
1
10
100
1000
10000
100000
1000000
如何从列表中删除元素?
您可以使用List
- Remove(T):此方法用于从列表中删除第一次出现的特定对象。
- RemoveAll(Predicate
): 此方法用于删除所有与指定谓词定义的条件匹配的元素。 - RemoveAt(Int32):此方法用于删除列表的指定索引处的元素。
- RemoveRange(Int32,Int32):此方法用于从List
中移除一系列元素。 - Clear():此方法用于从List
中删除所有元素。
例子:
// C# program to illustrate how
// to remove objects from the list
using System;
using System.Collections.Generic;
class GFG {
// Main Method
static public void Main()
{
// Creating list using List class
// and List() Constructor
List my_list = new List();
// Adding elements to List
// Using Add() method
my_list.Add(1);
my_list.Add(10);
my_list.Add(100);
my_list.Add(1000);
my_list.Add(10000);
my_list.Add(100000);
my_list.Add(1000000);
my_list.Add(10000000);
my_list.Add(100000000);
// Initial count
Console.WriteLine("Initial count:{0}", my_list.Count);
// Aftre using Remove() method
my_list.Remove(10);
Console.WriteLine("2nd count:{0}", my_list.Count);
// After using RemoveAt() method
my_list.RemoveAt(4);
Console.WriteLine("3rd count:{0}", my_list.Count);
// After using RemoveRange() method
my_list.RemoveRange(0, 2);
Console.WriteLine("4th count:{0}", my_list.Count);
// After using Clear() method
my_list.Clear();
Console.WriteLine("5th count:{0}", my_list.Count);
}
}
Initial count:9
2nd count:8
3rd count:7
4th count:5
5th count:0
清单如何排序?
您可以使用Sort()方法对元素进行排序。此方法用于对列表
例子:
// C# program to illustrate how
// sort a list
using System;
using System.Collections.Generic;
class GFG {
// Main Method
static public void Main()
{
// Creating list using List class
// and List() Constructor
List my_list = new List();
// Adding elements to List
// Using Add() method
my_list.Add(496);
my_list.Add(1000);
my_list.Add(100);
my_list.Add(10);
my_list.Add(10000);
my_list.Add(10000000);
my_list.Add(1000000);
my_list.Add(100000);
my_list.Add(0000);
// Without sorted List
Console.WriteLine("UnSorted List:");
foreach(int a in my_list)
{
Console.WriteLine(a);
}
// After Sort method
my_list.Sort();
Console.WriteLine("Sorted List:");
foreach(int a in my_list)
{
Console.WriteLine(a);
}
}
}
UnSorted List:
496
1000
100
10
10000
10000000
1000000
100000
0
Sorted List:
0
10
100
496
1000
10000
100000
1000000
10000000