C#(四十七)之C#List

418 阅读5分钟

「这是我参与2022首次更文挑战的第36天,活动详情查看:2022首次更文挑战

前几天,看同事写的代码中有list相关的字眼,百度了一下,原来是C#中list泛型集合。

了解一下。

 

List:泛型集合,List类是 ArrayList 类的泛型等效类。该类使用大小可按需动态增加的数组实现 IList 泛型接口。

泛型的好处: 它为使用c#语言编写面向对象程序增加了极大的效力和灵活性。不会强行对值类型进行装箱和拆箱,或对引用类型进行向下强制类型转换,所以性能得到提高。 

 

使用命名空间:

using System.Collections.Generic;

 

list一些方法和属性:

1.      Capacity 用于获取或设置List可容纳元素的数量。当数量超过容量时,这个值会自动增长。您可以设置这个值以减少容量,也可以调用trin()方法来减少容量以适合实际的元素数目。

2.      Count 属性,用于获取数组中当前元素数量

3.      Item( ) 通过指定索引获取或设置元素。对于List类来说,它是一个索引器。

4.      Add( )  在List中添加一个对象的公有方法

5.      AddRange( )  公有方法,在List尾部添加实现了ICollection接口的多个元素

6.      BinarySearch( ) 重载的公有方法,用于在排序的List内使用二分查找来定位指定元素.

7.      Clear( )  在List内移除所有元素

8.      Contains( )  测试一个元素是否在List内

9.      CopyTo( )  重载的公有方法,把一个List拷贝到一维数组内

10.    Exists( )  测试一个元素是否在List内

11.    Find( )  查找并返回List内的出现的第一个匹配元素

12.    FindAll( )  查找并返回List内的所有匹配元素

13.    GetEnumerator( )  重载的公有方法,返回一个用于迭代List的枚举器

14.    Getrange( )  拷贝指定范围的元素到新的List内

15.    IndexOf( ) 重载的公有方法,查找并返回每一个匹配元素的索引

16.    Insert( )  在List内插入一个元素

17.    InsertRange( ) 在List内插入一组元素

18.    LastIndexOf( )  重载的公有方法,,查找并返回最后一个匹配元素的索引

19.    Remove( )  移除与指定元素匹配的第一个元素

20.    RemoveAt( )  移除指定索引的元素

21.    RemoveRange( ) 移除指定范围的元素

22.    Reverse( ) 反转List内元素的顺序

23.    Sort( )  对List内的元素进行排序

24.    ToArray( )  把List内的元素拷贝到一个新的数组内

25.    trimToSize( ) 将容量设置为List中元素的实际数目

 

1:声明list

①、List mList = new List();  

T为列表中元素类型,现在以string类型作为例子

List<string> mList = new List<string>();

 

②、List testList =new List (IEnumerable collection);

以一个集合作为参数创建List:

string[] arr = { "Ha""Hunter""Tom""Lily""Jay""Jim""Kuku""Locu" };
List<string> mList = new List<string>(arr);

 

2:添加元素 Add

添加一个元素

语法: List. Add(T item)  

mList.Add("cmailla");
foreach (string item in mList)
{
      Console.WriteLine(item);
}

 

3:指定位置添加元素 Insert

语法: Insert(int index, T item);

            mList.Insert(0,"qwert");
            foreach (string item in mList)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");

 

4:添加元素集合 AddRange

语法: List. AddRange(IEnumerable collection)

            string[] dfg = { "hiocvhi","jioosdfhio","erw"};
            mList.AddRange(dfg);
            foreach (string item in mList)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");

 

5:删除指定元素

语法:List. Remove(T item)

            mList.Remove("erw");
            foreach (string item in mList)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");

 

6:删除指定下标元素

语法:List. RemoveAt(int index);

            mList.RemoveAt(3);
            foreach (string item in mList)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");

 

7:从下标index开始,删除count个元素

语法:List. RemoveRange(int index, int count);

            mList.RemoveRange(3,5);
            foreach (string item in mList)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");

 

8:判断某个元素是否在该List中:

语法:List. Contains(T item)   返回值为:true/false

            bool s = mList.Contains("Ha");
            Console.WriteLine(s);
            Console.WriteLine("
");

 

9:给List里面元素排序:

语法: List. Sort ()   默认是元素第一个字母按升序

            mList.Sort();
            foreach (var item in mList)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");

 

10:给List里面元素顺序反转:

语法: List. Reverse ()   可以与List. Sort ()配合使用,达到想要的效果

            mList.Reverse();
            foreach (var item in mList)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");

 

11:List清空:

语法:List. Clear ()

            mList.Clear();
            foreach (var item in mList)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");

 

12:ist.FindAll方法:检索与指定谓词所定义的条件相匹配的所有元素

语法:public List FindAll(Predicate match);

Predicate是对方法的委托,如果传递给它的对象与委托中定义的条件匹配,则该方法返回 true。当前 List 的元素被逐个传递给Predicate委托,并在 List 中向前移动,从第一个元素开始,到最后一个元素结束。当找到匹配项时处理即停止。

Predicate 可以委托给一个函数或者一个拉姆达表达式:

正常委托:

        List<string> subList = mList.FindAll(ListFind); //委托给ListFind函数
        //ListFind函数
        public static bool ListFind(string name)
        {
            Console.WriteLine(name);
            if (name.Length > 3)
            {
                return true;
            }
            return false;
        }

匿名委托:

List<string> subList = mList.FindAlldelegate(string name) {
     Console.WriteLine(name);
     if (name.Length > 3)
     {
           return true;
      }
       return false;
});

Lambda表达式:

List<string> subList = mList.FindAll(name => {
      Console.WriteLine(name);
      if (name.Length > 3)
      {
            return true;
      }
      return false;
});

 

13:List.Find 方法:搜索与指定谓词所定义的条件相匹配的元素,并返回整个 List 中的第一个匹配元素。

语法:public T Find(Predicate match);

string listFind1 = mList.Find(ListFind);  //委托给ListFind函数
Console.WriteLine(listFind1);

 

14:List.FindLast 方法:搜索与指定谓词所定义的条件相匹配的元素,并返回整个 List 中的最后一个匹配元素。

语法:public T FindLast(Predicate match);

string listFind2 = mList.FindLast(ListFind);  //委托给ListFind函数
Console.WriteLine(listFind2);

 

15:List.TrueForAll方法:确定是否 List 中的每个元素都与指定的谓词所定义的条件相匹配。

语法:public bool TrueForAll(Predicate match);

bool flag = mList.TrueForAll(delegate(string name)
{
      Console.WriteLine(name);
      if (name.Length > 3)
      {
           return true;
      }
      return false;
});

16:List.Take(n)方法:  获得前n行 返回值为IEnumetable,T的类型与List的类型一样:就是复制

            IEnumerable<string> mmmlist = mList.Take(3);
            foreach (string item in mmmlist)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");

17:List.Where方法:检索与指定谓词所定义的条件相匹配的所有元素。跟List.FindAll方法类似。

使用该方法定义存储集合的元素开头是:IEnumerable

            IEnumerable<string> whereList = mList.Where(ListFind);
            foreach (var item in whereList)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");

  18:List.RemoveAll方法:移除与指定的谓词所定义的条件相匹配的所有元素。

语法: public int RemoveAll(Predicate match);

            mList.RemoveAll(name => {
                if (name.Length <= 6)
                {
                    return true;
                }
                else {
                    return false;
                }
            });
            foreach (var item in mList)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");

 

有好的建议,请在下方输入你的评论。

欢迎访问个人博客 guanchao.site

欢迎访问小程序:

在这里插入图片描述