堆栈(Stack):
代表了一个后进先出的对象集合。当您需要对各项进行后进先出的访问时,则使用堆栈。当您在列表中添加一项,称为推入元素,当您从列表中移除一项时,称为弹出元素。
Stack 类的方法和属性
下表列出了 Stack 类的一些常用的 属性:
属性 |
描述 |
Count |
获取 Stack 中包含的元素个数。 |
下表列出了 Stack 类的一些常用的 方法:
序号 |
方法名 & 描述 |
1 |
public virtual void Clear(); 从 Stack 中移除所有的元素。 |
2 |
public virtual bool Contains( object obj ); 判断某个元素是否在 Stack 中。 |
3 |
public virtual object Peek(); 返回在 Stack 的顶部的对象,但不移除它。 |
4 |
public virtual object Pop(); 移除并返回在 Stack 的顶部的对象。 |
5 |
public virtual void Push( object obj ); 向 Stack 的顶部添加一个对象。 |
6 |
public virtual object[] ToArray(); 复制 Stack 到一个新的数组中。 |
示例:
// 声明对象
Stack sta = new Stack();
// 推入对象
sta.Push("a");
sta.Push("b");
sta.Push("c");
sta.Push("d");
foreach (string item in sta)
{
Console.WriteLine(item);
}
Console.WriteLine("
");
// 取出顶部的元素且移除
string asdf = (string)sta.Pop();
foreach (string item in sta)
{
Console.WriteLine(item);
}
Console.WriteLine("
");
// 取出顶部元素,不移除
string ff = (string)sta.Peek();
foreach (string item in sta)
{
Console.WriteLine(item);
}
Console.WriteLine("
");
Console.ReadLine();
Queue是一个对象,存什么类型都好
System.Collections.Queue类表示对象的先进先出集合,存储在 Queue(队列) 中的对象在一端插入,从另一端移除。
优点
1、能对集合进行顺序处理(先进先出)。
2、能接受null值,并且允许重复的元素。
Queue的构造器
构造器函数 |
注释 |
Queue () |
初始化 Queue 类的新实例,该实例为空,具有默认初始容量(32)并使用默认增长因子(2.0)。 |
Queue (ICollection) |
初始化 Queue 类的新实例,该实例包含从指定集合复制的元素,具有与所复制的元素数相同的初始容量并使用默认增长因子。 |
Queue (Int32) |
初始化 Queue 类的新实例,该实例为空,具有指定的初始容量并使用默认增长因子。 |
Queue (Int32, Single) |
初始化 Queue 类的新实例,该实例为空,具有指定的初始容量并使用指定的增长因子。 |
Queue的属性
属性名 |
注释 |
Count |
获取 Queue 中包含的元素数。 |
Queue的方法
方法名 |
注释 |
Void Clear() |
从 Queue 中移除所有对象。 |
Bool Contains(object obj) |
确定某元素是否在 Queue 中。 |
Object Clone() |
创建 Queue 的浅表副本。 |
Void CopyTo(Array array,int index) |
从指定数组索引开始将 Queue 元素复制到现有一维 Array 中。 |
Object Dequeue() |
移除并返回位于 Queue 开始处的对象。 |
Void Enqueue(object obj) |
将对象添加到 Queue 的结尾处。 |
Object Peek() |
返回位于 Queue 开始处的对象但不将其移除。 |
Object[]ToArray() |
将 Queue 元素复制到新数组。 |
Void TrimToSize() |
将容量设置为 Queue 中元素的实际数目。 |
示例:
Queue que = new Queue();
// 添加元素
que.Enqueue("111");
que.Enqueue("222");
que.Enqueue("333");
que.Enqueue("444");
foreach (string item in que)
{
Console.WriteLine(item);
}
Console.WriteLine("
");
// 删除元素(取出)
string qw = (string)que.Dequeue();
Console.WriteLine(qw+"
");
foreach (string item in que)
{
Console.WriteLine(item);
}
Console.WriteLine("
");
// 取出元素,但不删除
qw = (string)que.Peek();
foreach (string item in que)
{
Console.WriteLine(item);
}
Console.WriteLine("
");
SortedList类:
SortedList 类代表了一系列按照键来排序的键/值对,这些键值对可以通过键和索引来访问。
排序列表是数组和哈希表的组合。它包含一个可使用键或索引访问各项的列表。如果您使用索引访问各项,则它是一个动态数组(ArrayList),如果您使用键访问各项,则它是一个哈希表(存储键值)也就是说是两个数组,相互关联。集合中的各项总是按键值排序。
SortedList 类的方法和属性
下表列出了 SortedList 类的一些常用的 属性:
属性 |
描述 |
Capacity |
获取或设置 SortedList 的容量。 |
Count |
获取 SortedList 中的元素个数。 |
IsFixedSize |
获取一个值,表示 SortedList 是否具有固定大小。 |
IsReadOnly |
获取一个值,表示 SortedList 是否只读。 |
Item |
获取或设置与 SortedList 中指定的键相关的值。 |
Keys |
获取 SortedList 中的键。 |
Values |
获取 SortedList 中的值。 |
下表列出了 SortedList 类的一些常用的 方法:
序号 |
方法名 & 描述 |
1 |
public virtual void Add( object key, object value ); |
2 |
public virtual void Clear(); |
3 |
public virtual bool ContainsKey( object key ); |
4 |
public virtual bool ContainsValue( object value ); |
5 |
public virtual object GetByIndex( int index ); |
6 |
public virtual object GetKey( int index ); |
7 |
public virtual IList GetKeyList(); |
8 |
public virtual IList GetValueList(); |
9 |
public virtual int IndexOfKey( object key ); |
10 |
public virtual int IndexOfValue( object value ); |
11 |
public virtual void Remove( object key ); |
12 |
public virtual void RemoveAt( int index ); |
13 |
public virtual void TrimToSize(); |
示例:
SortedList sort = new SortedList();
sort.Add("1等奖", "都是比较快");
sort.Add("3等奖", "删掉了");
sort.Add("2等奖", "线程VB方法");
for (int i = 0; i < sort.Count; i++)
{
// 获取键
Console.WriteLine(sort.GetKey(i));
// 获取元素值
Console.WriteLine(sort.GetByIndex(i)+"
");
}
// 获取键值数组
foreach (string item in sort.GetKeyList())
{
Console.WriteLine(item);
}
// 获取元素值
foreach (string item in sort.GetValueList())
{
Console.WriteLine(item);
}
测试使用全部代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
namespace stackss
{
class Program
{
static void Main(string[] args)
{
// 声明对象
Stack sta = new Stack();
// 推入对象
sta.Push("a");
sta.Push("b");
sta.Push("c");
sta.Push("d");
foreach (string item in sta)
{
Console.WriteLine(item);
}
Console.WriteLine("
");
// 取出顶部的元素且移除
string asdf = (string)sta.Pop();
foreach (string item in sta)
{
Console.WriteLine(item);
}
Console.WriteLine("
");
// 取出顶部元素,不移除
string ff = (string)sta.Peek();
foreach (string item in sta)
{
Console.WriteLine(item);
}
Console.WriteLine("
");
Queue que = new Queue();
// 添加元素
que.Enqueue("111");
que.Enqueue("222");
que.Enqueue("333");
que.Enqueue("444");
foreach (string item in que)
{
Console.WriteLine(item);
}
Console.WriteLine("
");
// 删除元素(取出)
string qw = (string)que.Dequeue();
Console.WriteLine(qw+"
");
foreach (string item in que)
{
Console.WriteLine(item);
}
Console.WriteLine("
");
// 取出元素,但不删除
qw = (string)que.Peek();
foreach (string item in que)
{
Console.WriteLine(item);
}
Console.WriteLine("
");
SortedList sort = new SortedList();
sort.Add("1等奖", "都是比较快");
sort.Add("3等奖", "删掉了");
sort.Add("2等奖", "线程VB方法");
for (int i = 0; i < sort.Count; i++)
{
// 获取键
Console.WriteLine(sort.GetKey(i));
// 获取元素值
Console.WriteLine(sort.GetByIndex(i)+"
");
}
// 获取键值数组
foreach (string item in sort.GetKeyList())
{
Console.WriteLine(item);
}
// 获取元素值
foreach (string item in sort.GetValueList())
{
Console.WriteLine(item);
}
Console.ReadLine();
}
}
}
有好的建议,请在下方输入你的评论。