C# List常用函式用法

Kaivin.bao發表於2019-01-11

本章講述:List常用函式d的用法

    List<T>類是ArrayList類的泛型等效類,該類使用大小可按需動態增加的陣列實現IList<T>泛型介面。
泛型的好處:它為使用c#語言編寫物件導向程式增加了極大的效力和靈活性。不會強行對值型別進行裝箱和拆箱,或對引用型別進行向下強制型別轉換,所以效能得到提高。
    效能注意事項:在決定使用IList<T>還是使用ArrayList類(兩者具有類似的功能)時,記住IList<T>類在大多數情況下執行得更好並且是型別安全的。如果對IList<T>類的型別T 使用引用型別,則兩個類的行為是完全相同的。但是,如果對型別T 使用值型別,則需要考慮實現和裝箱問題。

List 常用的用法:

1、宣告

//示例1:
List<T> mList = new List<T>();        //T為列表中元素型別,現在以string型別作為例子:
List<string> mList = new List<string>();
//示例2:
List<T> testList =new List<T> (IEnumerable<T> collection);  //以一個集合作為引數建立List:
string[] temArr = { "Ha", "Hunter", "Tom", "Lily", "Jay", "Jim", "Kuku", "Locu"};
List<string> testList = new List<string>(temArr);

2、新增元素

1、List. Add(T item)新增一個元素
    例: mList.Add("John");

2、List. AddRange(IEnumerable<T> collection) //新增一組元素
    例:string[] temArr = {"Ha","Hunter","Tom","Lily","Jay","Jim","Kuku","Locu"};
    mList.AddRange(temArr);

3、Insert(intindex, T item);        //在index位置新增一個元素
    例:mList.Insert(1,"Hei");

3、遍歷List中元素

foreach(Telement in mList)    // T的型別與mList宣告時一樣
{
    Console.WriteLine(element);
}

4、刪除元素

    1、List. Remove(T item)        //刪除一個值
  例:mList.Remove("Hunter");

  2、List. RemoveAt(intindex);    //刪除下標為index的元素
      例:mList.RemoveAt(0);

  3、List. RemoveRange(intindex,intcount);    //從下標index開始,刪除count個元素
      例:mList.RemoveRange(3, 2);

5、判斷某個元素是否在該List中:List. Contains(T item) //返回true或false,很實用

if(mList.Contains("Hunter"))
{
    Console.WriteLine("There is Hunter in the list");
}
else
{
  mList.Add("Hunter");
  Console.WriteLine("Add Hunter successfully.");
}

6、給List裡面元素排序:List.Sort()        //預設是元素第一個字母按升序;例:mList.Sort();

7、給List裡面元素順序反轉:List.Reverse ()可以不List.Sort()配合使用,達到想要的效果;例: mList.Sort();

8、List清空  : List.Clear()

9、獲得List中元素數目:List.Count()        //返回int值

10、List 查詢:自定義型別,查詢該列表中的類資料是否含有索引相同的, 使用Exists()函式。查詢列表中是否存在某個值;

int strartNum;
List<BaseWnd> coverWnds;
if (coverWnds.Exists(p=>p.Index == strartNum))
{
}

11、List 中 Find()查詢資料

class stu
{
    int id;
    string name;
    string sex;
    int age;
}

list<stu> add=new list<stu>(new Person[] { new Person(1, "aladdin" ,"men",20) , new Person(1, "zhao","men",6)});
add.Find(delegate(stup) { return p.Name == "abc" && p.age==15; });//使用委託

Lambda表示式: var result = from s in add where  s.Name .Equals("abc") && s.Age == 15 select s;  // 返回Student物件的集合

12、FindLastIndex、FindIndex、FindAll、Find

//FindIndex()方法是用來搜尋帶有一定特性的元素
// 例用委託做引數  public delegate bool Predicate<T>(T obj);

int index3 = add.FindIndex(param => param.name.Equals("jacky"));

// FindLastIndex是從後面查第一個出現的元素,因為我們這裡沒有重複元素,所以體現不出他只查詢一個,就停下來的效果

int index4 = add.FindLastIndex(p => p.name.Equals("aladdin"));

// Find方法與FindIndex方法用法一樣,不同的是,它返回的是元素本身

Person ppp = add.Find( p => p.name.Equals("jacky")) ;

// 如果要查詢所有的匹配元素,而不是找到第一個就停下來,就使用FindAll方法
// 我們查詢所有年紀等於100的物件,3個都符合

List<Person> newList = add.FindAll(p => p.age == 100);

13、兩個列表合併,去除重複的

List<int> listA = new List<int> {1,2,3,5,7,9};
List<int> listB = new List<int> {13,4,17,29,2};

listA.AddRange(listB );//把集合A.B合併
List<int> Result = listA.Union(listB).ToList<int>();          //剔除重複項
List<int> Result = listA.Concat(listB).ToList<int>();        //保留重複項

listA.BinarySearch("1");//判斷集合中是否包含某個值.如果包含則返回0

 

相關文章