List泛型集合常用方法


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace List泛型集合
{
    class Program
    {
        static void Main(string[] args)
        {
  //ArrayList的好處是長度可變,可以往里面放任意類型的數據。但是當我們從ArrayList中取數據的時候,取出來的全部是Object類型的數據,最終還要將這個Object類型的數據轉換成我們需要的類型數據。這期間就可以發生拆箱操作。費時間。而List泛型集合就能很好的解決這個問題。
  //--------------------------------------Add(); AddRange()添加
  //一旦你確定了泛型集合的類型,那么泛型集合里就只能存放該類型數據了。
  //創建泛型集合對象
  List<int> list = new List<int>();
  list.Add(1); //單List的類型是int的時候。Add(int item) Add方法的參數是int類型的。說明只能網里面存int類型的數據
  List<string> listStr = new List<string>();
  listStr.Add("abc");//單List的類型是string的時候。Add(string item) Add方法的參數是string類型的。說明只能網里面存string類型的數據
  List<int[]> listArray = new List<int[]>(); //list里面接收的是一個int[]數組。
  listArray.Add(new int[] { 1, 2, 3 });
  List<int[]> listIEnumerable = new List<int[]>();
  //AddRange(IEnumerable<int[]> collection); AddRange()方法的參數接收的是一個List<int[]>的集合。
  listIEnumerable.AddRange(new List<int[]>() { new int[] { 1, 2, 3 }, new int[] { 4, 5, 6 } });//
  //--------------------------------------listInt()  ;InsertRange()添加
  List<int> listInt = new List<int>() { 1, 2, 3 };
  listInt.Insert(0, 5); //從listInt這個泛型集合索引下標的0處插入一個5
  //InsertRange(int Index, IEnumerable<int> collection)
  listInt.InsertRange(1, new List<int> { 4, 5, 6 });//從listInt這個泛型集合索引下標的1處插入一個List<int>集合
  foreach (int i in listInt)
  {
      Console.WriteLine(i); //輸出5,1,2,3
  }
  //--------------------------------------Remove();RemoveRange()刪除
  List<int> listInt2 = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8 };
  listInt2.Remove(1); //Remove(int item)  刪除listInt2集合中 “1” 這個元素。
  listInt2.RemoveAt(0);//RemoveAt(int index) 刪除listInt2集合中索引下標為0的這個元素
  listInt2.RemoveRange(0, 2);//RemoveRange(int index,int count) 刪除一定范圍內的元素。從索引下標0處開始刪除,總共刪除2個元素。
  //RemoveAll(Predicate<int> math) //接收的是一個拉姆達表達式
  listInt2.RemoveAll(p => p > 2 && p <= 5); //刪除listInt2集合中 大於2並且小於等於5之間的元素
  foreach (int i in listInt2) 
  {
      Console.WriteLine(i);
  }
  //--------------------------------------Clear()清空所有元素
  List<int> listInt3 = new List<int>() { 1, 2, 3, 4, 5, 6 };
  listInt3.Clear();
  //--------------------------------------Contaion()包含 
  List<int> listInt4 = new List<int>() { 1, 2, 3, 4, 5, 6 };
  bool b = listInt4.Contains(2); //Contains(int item) 檢查listInt4泛型集合中是否包含了“2”這個元素。如果包含就返回true 不包含就返回false
  //--------------------------------------First();如果集合沒有任何元素,會拋異常
  List<int> listInt5 = new List<int>() { 1, 2, 3, 4, 5, 6 };
  //假如listInt5這個泛型集合沒有任何一項元素。那么調用First方法就會報錯。提示:序列不包含任何元素
  //First()方法的返回值為int類型
  int t1 = listInt5.First();//返回listInt5這個泛型集合中第一個元素 t1的值為1。假如當listInt5這個泛型集合沒有包含任何元素的時候,即:
  //List<int> listInt5 = new List<int>() { };
  //int t1 = listInt5.First(); 這里會報錯:提示:序列不包含任何元素
  // First()方法的返回值為int類型。返回滿足拉姆達表達式的第一個元素
  int t2 = listInt5.First(r => r > 4); //t2的值為5
  //FindAll()方法返回值為一個List<int> 泛型集合 。返回滿足拉姆達表達式的所有元素
  List<int> t3 = listInt5.FindAll(r => r < 5); //t3的元素為 1,2,3,4
  //--------------------------------------Single();如果集合沒有任何元素,會拋異常,如果大於一個元素也會拋異常
  List<int> listInt8 = new List<int>() { 1, 2, 3, 4, 5, 6 };
  //返回序列中滿足指定條件的唯一元素;如果有多個這樣的元素存在,則會引發異常
  int t8 = listInt8.Single(r => r > 3); //這里會拋異常:提示:序列包含一個以上的匹配元素。因為listInt8泛型集合里有4,5,6等元素是大於3的。
  int tt8 = listInt8.Single(r => r > 5);//tt8的值為6。 不會拋異常。因為listInt8泛型集合里只有,6等元素是大於5的。
  int tt88 = listInt8.Single(); //會拋異常:提示:序列包含一個以上的匹配元素。
  //如果 List<int> listInt8 = new List<int>() { 1}; 
  //int tt88 = listInt8.Single();泛型集合里只包含一個元素的時候,調用Single()方法就不會拋異常了。
  //--------------------------------------FirstOrDefault(); //如果集合沒有任何元素,不會拋異常
  List<int> listInt5A = new List<int>() { 1, 2, 3, 4, 5, 6 };
  //假如listInt5A這個泛型集合沒有任何一項元素。那么FirstOrDefault方法的默認返回值為0 而不會報錯。
  int tt1 = listInt5A.FirstOrDefault(); //返回listInt5A這個泛型集合中第一個元素 tt1的值為1。假如單listInt5A這個泛型集合里沒有任何元素的時候 ,即:
  //List<int> listInt5A = new List<int>(){};
  //int tt1 = listInt5A.FirstOrDefault(); //tt1的值為默認為0 ;而不會報錯。(這里之所以默認值為0是因為litInt5A是一個int類型的泛型集合。而int的默認值就是0 如果listInt5A是一個string類型的泛型集合的話。那么tt1的默認值就是null。因為string類型的默認值就是null)
  //Console.WriteLine("tt1的值為{0}", tt1); //輸出:tt1的值為0
  int tt2 = listInt5A.FirstOrDefault(r => r > 2); //返回滿足括號中朗姆達表達式的第一個值:listInt5A這個泛型集合中只有3,4,5,6 等元素>2 ;所以既然是返回滿足朗姆達表達式的第一個值。所以tt2的值為3
  int tt3 = listInt5A.FirstOrDefault(r => r == 8);
  Console.WriteLine("tt3的值為", +tt3);//輸出: tt3的值為   即:tt3的值為空 因為listInt5A里沒有8這個元素。所以找不到。既然找不到8這個元素,所以就什么都不會輸出了。
  //========================================================
  //Find方法和FirstOrDefault方法效果相同,都是返回滿足條件的第一個元素,如果沒有該元素,則返回null。
  //1>Find方法是.netFramework2.0的,而FirstOrDefault是3.5的。
  //2>Find方法只能在List<T>上使用,而后者能更廣泛應用在IEnemerable<T>上。
  //>Find最終是建立在Array的查找之上,而在IEnemerable上的FirstOrDefault是使用foreach查找的。因此,Find速度會比FirstOrDefault快很多,據測試可能會快一倍以上。
  //=========================================================
  //--------------------------------------Find(); //如果集合沒有任何元素,不會拋異常
  List<int> listInt6 = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
  //假如listInt6這個泛型集合沒有任何一項元素。那么Find方法的默認值返回值為0 而不會報錯。
  int t4 = listInt6.Find(r => r < 6); //返回滿足括號中朗姆達表達式的第一個元素 ;listInt6泛型集合中有1,2,3,4,5等元素是<6的 ,既然是返回滿足朗姆達表達式的第一個值 所以:t4的值為1
  int t5 = listInt6.Find(r => r > 6); //listInt6泛型集合中有7,8,9等元素的值是>6的。既然是返回滿足朗姆達表達式的第一個值 所以:t4的值為7
  List<int> t6 = listInt6.FindAll(r => r > 2);//listInt6泛型集合中有3,4,5,6,7,8,9等元素的值是>2的。所有t6的元素為3,4,5,6,7,8,9
  //--------------------------------------Any() 只要有一個元素滿足條件就返回true。否則返回false
  List<int> listInt7 = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
  //Any()檢查listInt6泛型集合中的元素是否滿足括號中的拉姆達表達式。只要有一個元素滿足條件就返回true。否則返回false
  bool b1 = listInt7.Any(r => r < 8); //b1的值為true;因為listInt7中有1,2,3,4,5,6,7等元素小於8
  bool b2 = listInt7.Any(r => r > 8); //b2的值為true;因為listInt7中 元素9是大於8的
  bool b3 = listInt7.Any(r => r > 10);//b3的值為false;因為listInt7中,沒有任何一個元素大於10
  //--------------------------------------ToArray() 將List<T>泛型集合轉換成數組
  List<int> listInt9 = new List<int>() { 1, 2, 3, 4, 5, 6 };
  int[] arr = listInt9.ToArray(); //將一個list<int> 泛型集合轉換成一個int類型的數組;這里可以轉換是因為,List<int>里存放的數據本身就是int類型的
  //--------------------------------------ToList() 將數組轉換成List<T>泛型集合
  int[] arr1 = new int[] { 1, 2, 3, 4, 5, 6 };
  List<int> arrTolist = arr1.ToList(); //將一個int[]類型數組轉換成List<int>泛型集合;這里可以轉換是因為,List<int>里存放的數據是int類型的。而arr數組存放的數據也是int 類型的
  //--------------------------------------Reverse() 元素反轉
  List<int> listInt10 = new List<int>() { 1, 2, 8, 4, 5, 6 };
  listInt10.Reverse(); //將listInt7這個泛型集合里的元素順序反轉。注意:是反轉,不是降序排序
  //--------------------------------------Sort() 升序排序
  List<int> listInt11 = new List<int>() { 2, 8, 4, 1, 6, 5, 3, 7 };
  listInt11.Sort(); //將listInt8這個泛型集合里的元素按照升序排序
  Console.WriteLine("---------------");
  foreach (int i in listInt11)
  {
      Console.WriteLine(i); //輸出:1,2,3,4,5,6,7,8
  }
  Console.ReadKey();
        }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM