📜  清单在C#中的实现

📅  最后修改于: 2021-05-29 16:25:45             🧑  作者: Mango

在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 的末尾。

注意:您也可以使用集合初始化程序添加元素。如下例所示:

例子:

步骤4:您可以使用以下方式访问列表的元素:

  • 使用foreach循环:您可以使用foreach循环来访问列表的元素/对象。

    例子:

  • 使用ForEach()方法:此方法用于对List 每个元素执行指定的操作。

    例子:

  • 使用for循环:您可以使用for循环访问列表的元素/对象。

    例子:

  • 使用索引器:您可以使用索引器来访问列表的元素/对象。

    例子:

例子:

// 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()方法对元素进行排序。此方法用于对列表中的元素或元素的一部分进行排序,方法是使用指定的或默认的IComparer 实现或提供的Comparison 委托来比较列表元素。

例子:

// 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