C#(五十八)之C#List

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

测试使用全部代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace listys
{
    class Program
    {
        static void Main(string[] args)
        {
            // 声明列表
            // List mList = new List();
 
            string[] arr = { "Ha""Hunter""Tom""Lily""Jay""Jim""Kuku""Locu" };
            List<string> mList = new List<string>(arr);
            Console.WriteLine(mList.Count);
 
            mList.Add("cmailla");
            foreach (string item in mList)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");
 
            mList.Insert(0,"qwert");
            foreach (string item in mList)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");
 
            string[] dfg = { "hiocvhi","jioosdfhio","erw"};
            mList.AddRange(dfg);
            foreach (string item in mList)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");
 
            mList.Remove("erw");
            foreach (string item in mList)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");
 
            mList.RemoveAt(3);
            foreach (string item in mList)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");
 
            mList.RemoveRange(3,5);
            foreach (string item in mList)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");
 
            bool s = mList.Contains("Ha");
            Console.WriteLine(s);
            Console.WriteLine("
");
 
            mList.Sort();
            foreach (var item in mList)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");
 
            mList.Reverse();
            foreach (var item in mList)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");
 
            /*mList.Clear();
            foreach (var item in mList)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");//*/
 
            // 正常委托
            // List subList = mList.FindAll(ListFind); //委托给ListFind函数
            // 匿名委托
            /*List subList = mList.FindAll( delegate(string name) {
                Console.WriteLine(name);
                if (name.Length > 3)
                {
                    return true;
                }
                return false;
            });//*/
 
            List<string> subList = mList.FindAll(name => {
                Console.WriteLine(name);
                if (name.Length > 3)
                {
                    return true;
                }
                return false;
            });
            foreach (string sss in subList)
            {
                Console.WriteLine("element in subList: " + sss);
            }
 
            string listFind1 = mList.Find(ListFind);  //委托给ListFind函数
            Console.WriteLine(listFind1);
 
            string listFind2 = mList.FindLast(ListFind);  //委托给ListFind函数
            Console.WriteLine(listFind2);
 
            bool flag = mList.TrueForAll(delegate(string name)
            {
                Console.WriteLine(name);
                if (name.Length > 3)
                {
                    return true;
                }
                return false;
            });
            Console.WriteLine(flag);
            Console.WriteLine("
");
 
 
            IEnumerable<string> mmmlist = mList.Take(3);
            foreach (string item in mmmlist)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");
 
 
            IEnumerable<string> whereList = mList.Where(ListFind);
            foreach (var item in whereList)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");
 
 
            mList.RemoveAll(name => {
                if (name.Length <= 6)
                {
                    return true;
                }
                else {
                    return false;
                }
            });
            foreach (var item in mList)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("
");
            Console.ReadLine();
        }
        //ListFind函数
        public static bool ListFind(string name)
        {
            if (name.Length > 3)
            {
                return true;
            }
            return false;
        }
    }
}

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

C#(五十八)之C#List_第1张图片

 

你可能感兴趣的:(windows)