數組的缺點:數組初始化後,容量固定
數組存儲數據類型固定
集合提供了一種靈活的處理方法,與數組不同,
集合處理對象組可以根據程序需要動態增長
或收縮存儲的容量
對於某些集合,還可以放入該集合任何對象
分配一個鍵 ,以便通過鍵快速訪問和檢索對象
集合是類 因此必須在使用前進行初始化,才能向集合添加元素
泛型集合(泛型類) 非泛型集合
使用非泛型集合需要引入命名空間:
system.collection
泛型集合
system.collection.generic
非泛型集合
Arraylist: 大小可以根據需求可調整的數組列表類該類中儲存的元素默認object
Hashtable:根據鍵來存取對應的值 把鍵和值都是object類型
Queue: 隊列集合 表示集合中的元素先進先出FIFO
Stack:棧 表示集合中的元素後進先出LIFO
Arraylist: 的使用
ArrayList arrayList = new ArrayList();
arrayList.Add(1234);
arrayList.Add(2.3f);
arrayList.Add("按時打卡了時間啊");
在指定下標插入元素 不會移除元素
arrayList.Insert(0, "baobao");
移除指定下標
arrayList.RemoveAt(2);
翻轉結合
arrayList.Reverse();
獲取集合長度
Console.WriteLine("{0}", arrayList.Count);
Console.WriteLine(arrayList[1]);
foreach (var item in arrayList)
{
Console.WriteLine(item);
}
Console.WriteLine(" ");
arrlist:1,支持靈活改變儲存空間大小
2,可以靈活插入,刪除,訪問元素
3,不是強類型 速度比數組要慢*/
Console.WriteLine("_______________________________________");
Stack stack = new Stack();
元素入棧,將元素插入集合中(插入頂部)
stack.Push("挖坑");
stack.Push("埋點土");
stack.Push("數個一二三四五");
出棧.將棧頂中的元素返回並移除
Console.WriteLine(stack.Pop());
出棧,將棧頂的元素返回但不移除
Console.WriteLine(stack.Peek());
清除棧中所有元素
stack.Clear();
將棧中所有元素轉存某個數組
object[] arr = stack.ToArray();
遍歷
foreach (var item in stack)
{
Console.WriteLine(item);
}
棧:後進先出的數據結構 2,隨着向棧中增加元素,棧空間會根據
內容重新分配空間
3,棧中允許存放null作爲有效值 棧中允許存放重複值*/
隊列FIFO
Console.WriteLine("_____________________________________________-");
Queue queue = new Queue();
入隊列,將元素添加到隊列
queue.Enqueue("白日依山盡");
queue.Enqueue("黃河入海流");
queue.Enqueue("舉頭望明月");
queue.Enqueue("低頭思故鄉");
出隊列 dequeue出隊列並移除
Console.WriteLine(queue.Dequeue());
出隊列 不移除
Console.WriteLine(queue.Peek());
清除隊列
queue.Clear();
foreach (var item in queue)
{
Console.WriteLine(item);
}
判斷隊列是否存在某個元素
if (queue.Contains("舉頭望明月"))
{
Console.WriteLine("我是一隻小鴨子");
}
獲取個數
Console.WriteLine(queue.Count);
隊列轉成數組
object[] ojbarr = queue.ToArray();
Console.WriteLine("_____________________________________________________");
1,queue: 是一種先進先出的數據結構
2,隨着忘隊列中添加元素,隊列存儲空間動態調整大小
3,queue也接受null作爲有效值,棧中允許存放重複值
4,在AI尋路算法中經常會用到queue
二,泛型集合
1,字典:dictionary:用來儲存有一一對應關係的數據的集合
使用key-value(鍵值對)來儲存數據
字典中key是惟一的,value可以是變量,也可以是對象,
字典是一個泛型集合(泛型類),實例化的時候必定定key和value的類型
*/
trygetvalue通過指定的key來獲取相應的value,如果能獲取到。
或者返回true,並將對應的value放入out參數中
3,訪問字典中的value,可以通過字典對象【key】
remove 移除字典中的字符 移除的是字典中的鍵值對
判斷是否出現指定字符key containkey
判斷字典中是否有指定的value containvalue
獲取字典中鍵值對的個數
Console.WriteLine(Dic.count);
獲取字典所有的key
dic.keys: 獲取所有的key
Dictionary<string, int>.keycollection = DictionaryBase.keys;
foreach (var item in collection)
{
Console.WriteLine(item);
}
獲取所有value
Dictionary<string,int>.valuecollection values=DictionaryBase.values'
foreach'
10,遍歷字典
foreach (var item in Dic)
{
Console.WriteLine(item.key+":"+item.value);
}
Console.ReadKey();
}
}
}