標籤:ccf string 預留位置 stack 順序 log ever ons 泛型
看到這個標題,大家應該就知道有泛型集合,就有非泛型集合
既然都是集合,咱們今兒就簡單的來對比講解下
需要記住的不算太多,理解記憶、理解記憶
2017-11-0411:39:09
C# 泛型集合之非泛型集合類與泛型集合類的對應:
*****ArrayList對應List
***HashTable對應Dictionary
*****Queue對應Queue
*****Stack對應Stack
SortedList對應SortedList
第一 : ArrayList(非泛型集合) 與List(泛型集合)
ArrayList 是數組的複雜版本。ArrayList 類提供在大多數 Collections 類中提供但不在 Array 類中提供的一些功能:
1.Array 的容量是固定的,而 ArrayList 的容量是根據需要自動擴充的。
2.ArrayList 提供添加、插入或移除某一範圍元素的方法。在 Array 中,您只能一次擷取或設定一個元素的值。
3.使用 Synchronized 方法可以很容易地建立 ArrayList 的同步版本。而 Array 將一直保持它直到使用者實現同步為止。
4.ArrayList 提供將唯讀和固定大小封裝返回到集合的方法。而 Array 不提供。
5.Array 提供 ArrayList 所不具有的某些靈活性:
a.可以設定 Array 的下限,但 ArrayList 的下限始終為零。
b.Array 可以具有多個維度,而 ArrayList 始終只是一維的。
c.特定類型(不包括 Object)的 Array 的效能比 ArrayList 好,這是因為 ArrayList 的元素屬於 Object 類型,所以在儲存或檢索實值型別時通常發生裝箱和unboxing。
d.要求一個數組的大多數情況也可以代之以使用 ArrayList。它更便於使用,並且通常具有與 Object 類型的數組類似的效能。
6.Array 位於 System 命名空間中;ArrayList 位於 System.Collections 命名空間中。
ArrayList類對象方法:
1:Add()向數組中添加一個元素,
2:Remove()刪除數組中的一個元素
3:(int i)刪除數組中索引值為i的元素
4:Reverse()反轉數組的元素
5:Sort()以從小到大的順序排列數組的元素
6:Clone()複製一個數組
一:ArrayList:
ArrayList可以不用指定維數 可動態賦值 賦不同類型值
1 ArrayList arrayList1 = new ArrayList();2 arrayList1.3 arrayList1.Add("a");4 arrayList1.Add(1);5 arrayList1.Add("b");6 Response.Write(arrayList1[1]);
二:Array:
Array的容量是固定的 先指定大小 在賦值
1 Array arrayList2 = Array.CreateInstance(typeof(string), 6);2 arrayList2.SetValue("a", 0);3 arrayList2.SetValue("b", 1);4 Response.Write(arrayList2.GetValue(1));
List泛型集合:
泛型集合List<T>
泛型最重要的應用就是集合操作,使用泛型集合可以提高代碼重用性,型別安全和更佳的效能。
List<T>的用法和ArrayList相似,List<T>有更好的型別安全,無須拆,裝箱。
在泛型定義中,泛型型別參數“<T>”是必須指定的,其中T是定義泛型類時的預留位置,其並不是一種類型,僅代表某種可能的類型。在定義時T會被使用的類型代替。泛型集合List<T>中只能有一個參數類型,“<T>”中的T可以對集合中的元素類型進行約束。
eg:
List<T>添加、刪除、檢索元素的方法和ArrayList相似,明顯的特點是不需要像ArrayList那樣裝箱和拆箱。
1 List < Student > students = new List < Student > (); 2 Student stu1 = new Student(); 3 stu1.Name = "陸小鳳"; 4 stu1.Number = "0801"; 5 stu1.Score = 20; 6 Student stu2 = new Student(); 7 stu2.Name = "西門吹雪"; 8 stu2.Number = "0802"; 9 stu2.Score = 23;10 students.Add(stu1);11 students.Add(stu2);12 Console.WriteLine("集合中的元素個數為{0}", students.Count);13 foreach (Student stu in students)14 {15 Console.WriteLine("/t{0}/t{1}/t{2}", stu.Name, stu.Number, stu.Score);16 }17 students.Remove(stu1);18 Console.WriteLine("集合中的元素個數為{0}", students.Count);19 Console.ReadLine();
List<T>和ArrayList的區別
List<T>和ArrayList的相同點:添加元素、刪除元素、通過索引訪問元素方法相同。
List<T>和ArrayList的不同點:
ArrayList可以添加任意類型元素;List<T>對添加的元素具有類型約束;
ArratList添加時裝箱,讀取時拆箱;List<T>不需要裝箱,拆箱操作;
1 //建立Person對象 2 Person p1 = new Person("張三", 30); 3 Person p2 = new Person("李四", 20); 4 Person p3 = new Person("王五", 50); 5 //建立類型為Person的對象集合 6 List < Person > persons = new List < Person > (); 7 //將Person對象放入集合 8 persons.Add(p1); 9 persons.Add(p2);10 persons.Add(p3);11 //輸出第2個人的姓名12 Console.WriteLine(persons[1].Name);13 foreach (Person p in persons)14 {15 Console.WriteLine("/t{0}/t{1}", p.Name, p.Age);16 }
今天暫時到這裡,慢慢理解,我腦子也腦子有點兒不夠用了,頭疼過去過去就好了
2017-11-04 11:40:11
C#集合與泛型集合