集合,stack,queue,dictionary,ArrayList,listT
哎呀我去,昨天搞那個全排列和尋路算法搞得我腦袋都大了,忘寫博了,唉?,早起補(bǔ)上。。。。。。。
今天的東西挺多,但沒什么難度。
集合:創(chuàng)建和管理相關(guān)對象組的第?種?式就是:創(chuàng)建對象集合。
集合提供?種靈活的處理?法。 與數(shù)組不同,處理的對
象組可根據(jù)程序更改的需要動態(tài)地增?和收縮。 對于某
些集合,您可以為放?該集合的任何對象分配?個“鍵”,
以便使?該鍵快速檢索對象。
注意: 集合是類,因此必須聲明新集合后,才能向該集合
中添加元素。集合分為兩種類型: ?泛型集合和泛型集合。
使??泛型集合的 需引?: System.Collections命名空間。
使?泛型集合需引?: System.Collections.Generic命名
空間。
stack:Stack稱為棧,棧和隊列?常相似,只不過隊列是先進(jìn)
先出,?棧中的數(shù)據(jù)添加和移除都在?端進(jìn)?,遵守棧
中的數(shù)據(jù)則后進(jìn)先出。 Stack類實現(xiàn)了ICollection和
IEnumerable接?。 定義如下:
Push() 將對象插?Stack的頂部。(?棧操作)
Pop() 移除并返回Stack頂部的對象 。(出棧操作)
Peek() 返回位于Stack頂部的對象,但不移除。
Contains() 確定某元素是否在Stack中。
Clear() 從Stack中移除所有對象。
Count 獲取Stack中包含的元素。
1.后進(jìn)先出( LIFO)的?種數(shù)據(jù)結(jié)構(gòu)。
2.隨著向 Stack 中添加元素,容量通過重新分配按需?動
增加。
3.Stack 接受 null 作為有效值并且允許重復(fù)的元素。
Queue:Queue稱為隊列,隊列是這樣?種數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)有列
表的?端插?,并由列表的另?端移除。就像單?道,
只能從?段進(jìn),從?端出。 Queue類同樣也是實現(xiàn)了
ICollection和IEnumerable接?。
Enqueue() 將對象添加到 Queue 的結(jié)尾處。
Dequeue() 移除并返回位于 Queue 開始處的對象。
Peek() 返回位于 Queue 開始處的對象但不將其移除。
Clear() 從 Queue 中移除所有對象。
Contains() 確定某元素是否在 Queue 中。
Count 獲取 Queue 中包含的元素數(shù)。
1.先進(jìn)先出( FIFO)的?種數(shù)據(jù)結(jié)構(gòu)。
2.隨著向Queue 中添加元素,容量通過重新分配按需?動增加。 可通過調(diào)? TrimToSize 來減少容量。
3.Stack 接受 null 作為有效值并且允許重復(fù)的元素。
4.在AI尋路算法中經(jīng)常?的Queue。
Dictionary:Dictionary<TKey, TValue> 類稱為字典類,表?鍵和
值的集合。其中TKey表?字典中的類型, Tvalue表?
字典中的值類型。 Dictionary類實現(xiàn)了ICollection、
IEnumerable、 IDictionary·接?。 定義如下:
Add() 將指定的鍵和值添加到字典中。
TryGetValue() 獲取與指定的鍵相關(guān)聯(lián)的值。
Clear() 從 Dictionary<TKey, TValue> 中移除所有的鍵和值。
Remove() 從 Dictionary<TKey, TValue> 中移除所指定的鍵的值。
ContainsKey() 確定 Dictionary<TKey, TValue> 是否包含指定的鍵。
ContainsValue() 確定 Dictionary<TKey, TValue> 是否包含特定值。
Count 獲取Stack中包含的元素。
Keys 獲取包含 Dictionary<TKey, TValue> 中的鍵的集合。
Values 獲取包含 Dictionary<TKey, TValue> 中的值的集合。
1.字典是?個泛型集合。
2.TKey必須唯?。
3.Value可以是變量,也可以是對象。
ArrayList:是?個特殊的數(shù)組。通過添加和刪除元素,就可
以動態(tài)改變數(shù)組的?度。 ArrayList并不是強(qiáng)類型, ArrayList
可能并不總是提供特定任務(wù)的最佳性能。 ArrayList類實現(xiàn)了
IList、 ICollection和IEnumerable接?。 定義如下:
Add() 將對象添加到 ArrayList 的結(jié)尾處。
Insert() 將元素插? ArrayList 的指定索引處。
Remove() 從 ArrayList 中移除特定對象的第?個匹配項。
RemoveAt() 移除 ArrayList 的指定索引處的元素。
Reverse() 將整個 ArrayList 中元素的順序反轉(zhuǎn)。
Contains() 確定某元素是否在ArrayList中。
Clear() 從 ArrayList 中移除所有元素。
Count 獲取Stack中包含的元素。
1.?持?動改變??的功能。
2.可以靈活的插?元素、刪除元素、訪問元素。
3.不是強(qiáng)類型,速度跟數(shù)組?起來要慢。
List<T>類:表?可通過索引訪問的對象的強(qiáng)類型列表。 提供?
于對列表進(jìn)?搜索、排序和操作的?法。 List<T>是ArrayList
類的泛型等效類,該類使???可按需動態(tài)增加的數(shù)組實現(xiàn)
IList<T>泛型接?。 List<T>類同樣也是實現(xiàn)了ICollection、
IEnumerable和IList接?。 定義如下:
Add() 將對象添加到 List<T> 的結(jié)尾處。
Insert() 將元素插? List<T> 的指定索引處。
Remove() 從 List<T> 中移除特定對象的第?個匹配項。
RemoveAt() 從 List<T> 中移除特定對象的第?個匹配項。
RemoveAll() 移除與指定的謂詞所定義的條件相匹配的所有元素。
Reverse() 將整個 List<T> 中元素的順序反轉(zhuǎn)。
IndexOf(T) 搜索指定的對象,并返回整個 List<T> 中第?個匹配項
Sort() 的從零開始的索引。 使?默認(rèn)?較器對整個 List<T> 中的元素進(jìn)?排序。
Contains() 確定某元素是否在ArrayList中。
Clear() 從 List<T>中移除所有元素。
Count 獲取Stack中包含的元素。
1.于ArrayList相?, List<T>好并且是類型安全的。
2. 若List<T> 類的類型 T 使?是完全相同的。 但是,如果要考慮實現(xiàn)和裝箱問題。
?
在一個有限平面區(qū)域上(1000 * 1000)隨機(jī)生成有序的n個點(用結(jié)構(gòu)體表示點),將其保存在集合中,并排序public struct Point :IComparable{public int x;public int y;public Point(int x, int y){this.x = x;this.y = y;}public int CompareTo (object value){Point p = (Point) value;if (this.x > p.x) {return 1;}else if (this.x == p.x) {return 0;}else {return -1;}} }class Program??? {
??????? static void Main(string[] args)
??????? {
Random r = new Random();int n = int.Parse(Console.ReadLine());List<Point> list = new List<Point>();for (int i = 0; i < n; i++) {list.Add(new Point(r.Next(1, 1000),r.Next(1, 1000)));}foreach (Point item in list) {Console.WriteLine("x:{0}, y:{1}", item.x, item.y);}list.Sort();foreach (Point item in list) {Console.WriteLine("x:{0}, y:{1}", item.x, item.y);}
}
}
?
轉(zhuǎn)載于:https://www.cnblogs.com/little-sun/p/4349370.html
總結(jié)
以上是生活随笔為你收集整理的集合,stack,queue,dictionary,ArrayList,listT的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 右键助手1.0正式版
- 下一篇: [应用][js+css3]3D盒子导航[