回覆列表
  • 1 # 使用者7063786766555

    1、List的基礎、常用方法:

    宣告:

    1、List<T> mList = new List<T>();

    T為列表中元素型別,現在以string型別作為例子

    E.g.:List<string> mList = new List<string>();

    2、List<T> testList =new List<T> (IEnumerable<T> collection);

    以一個集合作為引數建立List

    E.g.:

    string[] temArr = { "Ha", "Hunter", "Tom", "Lily", "Jay", "Jim", "Kuku", "Locu" };

    List<string> testList = new List<string>(temArr);

    新增元素:

    1、 List. Add(T item) 新增一個元素

    E.g.:mList.Add("John");

    2、 List. AddRange(IEnumerable<T> collection) 新增一組元素

    E.g.:

    string[] temArr = { "Ha","Hunter", "Tom", "Lily", "Jay", "Jim", "Kuku", "Locu" };

    mList.AddRange(temArr);

    3、Insert(int index, T item); 在index位置新增一個元素

    E.g.:mList.Insert(1, "Hei");

    遍歷List中元素:

    foreach (T element in mList) T的型別與mList宣告時一樣

    {

    Console.WriteLine(element);

    }

    E.g.:

    foreach (string s in mList)

    {

    Console.WriteLine(s);

    }

    E.g.:mList.Remove("Hunter");

    E.g.:mList.RemoveAt(0);

    3、 List. RemoveRange(int index, int count);

    E.g.:mList.RemoveRange(3, 2);

    判斷某個元素是否在該List中:

    List. Contains(T item) 返回true或false,很實用

    E.g.:

    if (mList.Contains("Hunter"))

    {

    Console.WriteLine("There is Hunter in the list");

    }

    else

    {

    mList.Add("Hunter");

    Console.WriteLine("Add Hunter successfully.");

    }

    給List裡面元素排序:

    List. Sort () 預設是元素第一個字母按升序

    E.g.:mList.Sort();

    給List裡面元素順序反轉:

    List. Reverse () 可以與List. Sort ()配合使用,達到想要的效果

    E.g.:mList.Sort();

    List清空:List. Clear ()

    E.g.: mList.Clear();

    獲得List中元素數目:

    List. Count () 返回int值

    E.g.:

    int count = mList.Count();

    Console.WriteLine("The num of elements in the list: " +count);

    2、List的進階、強大方法:

    舉例用的List:

    string[] temArr = { Ha","Hunter", "Tom", "Lily", "Jay", "Jim", "Kuku", " "Locu" };

    mList.AddRange(temArr);

    List.Find 方法:搜尋與指定謂詞所定義的條件相匹配的元素,並返回整個 List 中的第一個匹配元素。

    public T Find(Predicate<T> match);

    Predicate是對方法的委託,如果傳遞給它的物件與委託中定義的條件匹配,則該方法返回 true。當前 List 的元素被逐個傳遞給Predicate委託,並在 List 中向前移動,從第一個元素開始,到最後一個元素結束。當找到匹配項時處理即停止。

    Predicate 可以委託給一個函式或者一個拉姆達表示式:

    委託給拉姆達表示式:

    E.g.:

    string listFind = mList.Find(name => //name是變數,代表的是mList

    { //中元素,自己設定

    if (name.Length > 3)

    {

    return true;

    }

    return false;

    });

    Console.WriteLine(listFind); //輸出是Hunter

    委託給一個函式:

    E.g.:

    string listFind1 = mList.Find(ListFind); //委託給ListFind函式

    Console.WriteLine(listFind); //輸出是Hunter

    ListFind函式:

    public bool ListFind(string name)

    {

    if (name.Length > 3)

    {

    return true;

    }

    return false;

    }

    這兩種方法的結果是一樣的。

    List.FindLast 方法:搜尋與指定謂詞所定義的條件相匹配的元素,並返回整個 List 中的最後一個匹配元素。

    public T FindLast(Predicate<T> match);

    用法與List.Find相同。

    List.TrueForAll方法: 確定是否 List 中的每個元素都與指定的謂詞所定義的條件相匹配。

    public bool TrueForAll(Predicate<T> match);

    委託給拉姆達表示式:

    E.g.:

    bool flag = mList.TrueForAll(name =>

    {

    if (name.Length > 3)

    {

    return true;

    }

    else

    {

    return false;

    }

    }

    );

    Console.WriteLine("True for all: "+flag); //flag值為false

    委託給一個函式,這裡用到上面的ListFind函式:

    E.g.:

    bool flag = mList.TrueForAll(ListFind); //委託給ListFind函式

    Console.WriteLine("True for all: "+flag); //flag值為false

    這兩種方法的結果是一樣的。

    List.FindAll方法:檢索與指定謂詞所定義的條件相匹配的所有元素。

    public List<T> FindAll(Predicate<T> match);

    E.g.:

    List<string> subList = mList.FindAll(ListFind); //委託給ListFind函式

    foreach (string s in subList)

    {

    Console.WriteLine("element in subList: "+s);

    }

    這時subList儲存的就是所有長度大於3的元素

    List.Take(n): 獲得前n行 返回值為IEnumetable<T>,T的型別與List<T>的型別一樣

    E.g.:

    IEnumerable<string> takeList= mList.Take(5);

    foreach (string s in takeList)

    {

    Console.WriteLine("element in takeList: " + s);

    }

    這時takeList存放的元素就是mList中的前5個

    List.Where方法:檢索與指定謂詞所定義的條件相匹配的所有元素。跟List.FindAll方法類似。

    E.g.:

    IEnumerable<string> whereList = mList.Where(name =>

    {

    if (name.Length > 3)

    {

    return true;

    }

    else

    {

    return false;

    }

    });

    foreach (string s in subList)

    {

    Console.WriteLine("element in subList: "+s);

    }

    這時subList儲存的就是所有長度大於3的元素

    List.RemoveAll方法:移除與指定的謂詞所定義的條件相匹配的所有元素。

    public int RemoveAll(Predicate<T> match);

    E.g.:

    mList.RemoveAll(name =>

    {

    if (name.Length > 3)

    {

    return true;

    }

    else

    {

    return false;

    }

    });

    foreach (string s in mList)

    {

    Console.WriteLine("element in mList: " + s);

    }

    這時mList儲存的就是移除長度大於3之後的元素。

    List<T> 是一個泛型連結串列...T表示節點元素型別

    比如

    List<int> intList;表示一個元素為int的連結串列

    intList.Add(34); //新增

    intList.Count; //連結串列長度

    還有Insert,Find,FindAll,Contains等方法,也有索引方法 intList[0] = 23;

    1.減少了裝箱拆箱

    2.便於編譯時檢查資料型別

    List<Object> 就相當於 System.Collections命名空間裡面的List

  • 中秋節和大豐收的關聯?
  • 主角穿越到未來,成了稀有物種的文?