C#(四十七)之C#List

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

QQ图片20220426163834.jpg

前几天,看同事写的代码中有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.FindAll( delegate(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("
");



目录
相关文章
|
安全 C#
C# List基本用法
C# List基本用法
C# 找出泛型集合中的满足一定条件的元素 List.Wher()
在学习的过程中,发现泛型集合List有一个Where函数可以筛选出满足一定条件的元素,结合Lambda表达式使用特别方便,写出来与大家分享。 1.关于Func Func是一种有任意个输入参数,有一个返回值的委托,在使用的过程中,Func,前n-1个是输入参数类型,第N个是输出参数类型。
2316 0
|
存储 C# 索引
C# | 比较IEnumerable、List、数组
IEnumerable`定义了一组用于枚举集合的方法,包括`GetEnumerator`方法,该方法返回一个实现了`IEnumerator`接口的对象,用于枚举集合中的每个元素。`List`和数组都可以使用`foreach`循环来遍历其中的元素,这是因为它们都实现了`IEnumerable`接口。 由于数组在内存中开辟了一段连续的空间,因此可以直接通过索引访问元素,访问速度很快。而 List 则需要通过指针或引用来访问元素,速度相对较慢。 由于数组的大小是固定的,当需要添加或删除元素时,需要重新创建一个新数组,将原数组中的元素复制到新数组中,并添加或删除元素。
810 0
C# | 比较IEnumerable、List、数组
C#List与ArrayList,Hashtable与Dictionary总结
C#List与ArrayList,Hashtable与Dictionary总结
253 0
C#List与ArrayList,Hashtable与Dictionary总结
【C#】【平时练习】将左边列表框(List)的内容(月份)添加到右边列表框。最终右侧显示的内容(月份)要保持一定顺序
【C#】【平时练习】将左边列表框(List)的内容(月份)添加到右边列表框。最终右侧显示的内容(月份)要保持一定顺序
295 0
【C#】【平时练习】将左边列表框(List)的内容(月份)添加到右边列表框。最终右侧显示的内容(月份)要保持一定顺序
|
安全 C# 索引
C# 泛型集合和非泛型集合(List ArrayLIst)
C# 泛型集合和非泛型集合(List ArrayLIst)
355 0
|
存储 安全 C#
C#里面的不同集合(数组、ArrayList集合、List泛型)
在内存中连续存储,因此可以快速而容易地从头到尾遍历元素,可以快速地修改元素
|
C# 索引
C#List转IList方法
List类:表示可通过索引访问的对象的强类型列表,提供用于对列表进行搜索、排序和操作的方法。 IList接口:表示可按照索引单独访问的一组对象。
497 0
C#List转IList方法
C#合并两个List并删除重复项
C#合并两个List并删除重复项