数组的缺点:数组初始化后,容量固定
数组存储数据类型固定
集合提供了一种灵活的处理方法,与数组不同,
集合处理对象组可以根据程序需要动态增长
或收缩存储的容量
对于某些集合,还可以放入该集合任何对象
分配一个键 ,以便通过键快速访问和检索对象
集合是类 因此必须在使用前进行初始化,才能向集合添加元素
泛型集合(泛型类) 非泛型集合
使用非泛型集合需要引入命名空间:
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();
}
}
}