11、C#基础整理(特殊集合和哈希表)

特殊集合:队列、栈

一、栈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");   ——  根据键值移除该键

11、C#基础整理(特殊集合和哈希表)

上一篇:Windows上安装Jekyll


下一篇:【cocos2d-js官方文档】二十一、v3相对于v2版本的api变动