特殊集合:队列、栈
一、栈Stack类:先进后出,没有索引
Stack ss = new Stack();
1、增加数据:push :将元素推入集合
ss.Push(3); ss.Push(5); ss.Push(7);
2、获取数据:
(1)peek返回位于stack顶部的对象但不移除(获取最后一个进入的元素的值)
Console.WriteLine(ss.Peek());//7
(2)pop将元素一个个弹出集合(读取并移除)
Console.WriteLine(ss.Pop());//7 Console.WriteLine(ss.Pop());//5
3、其他操作
ToArray:返回数组类型,将栈中的元素转换成集合,然后放到数组里
object[] shuzu = (object[])ss.ToArray(); foreach(object a in shuzu) { Console.WriteLine(a); }
二、队列Queue类:先进先出
1、定义方法:
Queue q = new Queue();
2、增加:
(1)Enqueue将元素放到队列末尾
q.Enqueue(3); q.Enqueue(5); q.Enqueue(7);
(2)Peek:返回开始处的对象但不移除
Console.WriteLine("Peek:"+q.Peek());//3
3、获取:Dequeue移除并返回位于队列开始处的对象
Console.WriteLine("Dequeue:"+q.Dequeue());
哈希表Hashtable类
以键值成对读取数据,可以自己设置索引
Hashtable ht = new Hashtable(); ht.Add("a", "zhangsan");//一个任意类型的key + 一个任意类型的value值 ht.Add("b", "lisi"); ht.Add("c", "wangwu");
打印哈希表中元素个数的方法:
ICollection htkeys = ht.Keys;
Console.WriteLine(htkeys.Count);
读取key值
//copyto---复制到一个数组中 string[] ss1 = new string[3]; htkeys.CopyTo(ss1,0);
读取value值
ICollection htvalues = ht.Values; string[] ss2 = new string[3]; htvalues.CopyTo(ss2,0);
成对读取:key和value都需要重新定义
IDictionaryEnumerator id = ht.GetEnumerator(); //object key1=id.Key;//获取一个值 //object value1 = id.Value; //id.MoveNext();//往下移一个元素,返回布尔值,如果为false就不能再移动了 while(id.MoveNext()) { object key2=id.Key; Console.WriteLine(key2.ToString()); object value2 = id.Value; Console.WriteLine(value2.ToString()); }
ht.Remove("b"); —— 根据键值移除该键