.NET中的Queue和Stack
1.ArrayList类
ArrayList类主要用于对一个数组中的元素进行各种处理。在ArrayList中主要使用Add、Remove、RemoveAt、Insert四个方法对栈进行操作。Add方法用于将对象添加到ArrayList的结尾处;Remove方法用于从ArrayList中移除特定对象的第一个匹配项;RemoveAt方法用于移除ArrayList的指定索引处的元素;Insert方法用于将元素插入ArrayList的指定索引处。
示例将介绍如何创建一个ArrayList,如何添加项、移除项以用如何遍历ArrayList。程序代码如下:
- using System.Collections;//引入命名空间
- namespace _1
- {
- class ArrayListTest
- {
- static void Main(string[] args)
- {
- ArrayList arrlist = new ArrayList();//实例化一个ArrayList对象
- //使用Add方法向ArrayList中添加元素,将元素添加到ArrayList对象的末尾
- arrlist.Add("苹果");
- arrlist.Add("香蕉");
- arrlist.Add("葡萄");
- foreach (int n in new int[] { , , })
- {
- arrlist.Add(n);
- }
- //移除值为的第一个元素
- arrlist.Remove();
- //移除当前索引为的元素,即第个元素
- arrlist.RemoveAt();
- //在指定索引处添加一个元素
- arrlist.Insert(, "apple");
- //遍历ArrayList,并输出所有元素
- for (int i = ; i < arrlist.Count; i++)
- {
- Console.WriteLine(arrlist[i].ToString());
- }
- }
- }
- }
2.Stack类
Stack(堆栈)类主要实现了一个LIFO(Last In First Out,后进先出)的机制。元素从栈的顶部插入(入栈操作),也从堆的顶部移除(出栈操作)。在Stack中主要使用Push,Pop,Peek三个方法对栈进行操作。Push方法用于将对象插入Stack的顶部;Pop方法用于移除并返回位于Stack顶部的对象;Peek方法用于返回位于Stack顶部的对象但不将其移除。
示例将介绍如何创建一个Stack,如何添加项、移除项以用如何遍历Stack。程序代码如下:
- using System.Collections;//引入命名空间
- namespace _2
- {
- class StackTest
- {
- static void Main(string[] args)
- {
- //实例化Stack类的对象
- Stack stack = new Stack();
- //入栈,使用Pust方法向Stack对向中添加元素
- for (int i = ; i < ;i++)
- {
- stack.Push(i);
- Console.WriteLine("{0}入栈",i);
- }
- //返回栈顶元素
- Console.WriteLine ("当前栈顶元素为:{0}",stack.Peek().ToString ());
- //出栈
- Console.WriteLine("移除栈顶元素:{0}", stack.Pop().ToString());
- //返回栈顶元素
- Console.WriteLine("当前栈顶元素为:{0}", stack.Peek().ToString());
- //遍历栈
- Console.WriteLine("遍历栈");
- foreach (int i in stack)
- {
- Console.WriteLine(i);
- }
- //清空栈
- while(stack .Count!=)
- {
- int s = (int)stack.Pop();
- Console.WriteLine("{0}出栈",s);
- }
- }
- }
- }
3.Queue类
Queue(队列)类主要实现了一个FIFO(First In First Out,先进先出)的机制。元素在队列的尾部插入(入队操作),并从队列的头部移出(出队操作)。在Queue中主要使用Enqueue、Dequeue、Peek三个方法对队进行操作。Enqueue方法用于将对象添加到Queue的结尾处;Dequeue方法移除并返回位于Queue开始处的对象;Peek方法用于返回位于Queue开始处的对象但不将其移除。
示例将介绍如何创建一个Queue,如何添加项、移除项以用如何遍历Queue。程序代码如下:
- using System.Collections;//引入命名空间
- namespace _3
- {
- class QueueTest
- {
- static void Main(string[] args)
- {
- //实例化Queue类的对象
- Queue queue = new Queue();
- //入栈,使用Pust方法向Stack对向中添加元素
- for (int i = ; i < ; i++)
- {
- queue .Enqueue(i);
- Console.WriteLine("{0}入队", i);
- }
- //返回队开始处的元素
- Console.WriteLine("当前队开始处元素为:{0}", queue.Peek().ToString());
- //遍历队
- Console.WriteLine("遍历队");
- foreach (int i in queue)
- {
- Console.WriteLine(i);
- }
- //清空栈
- while (queue.Count != )
- {
- int q = (int)queue.Dequeue ();
- Console.WriteLine("{0}出队", q);
- }
- }
- }
- }
4.Hashtable类
Hashtable(哈希表)是一种键/值对集合,这些键/值对根据键的哈希代码进行组织。在一个Hashtable中插入一对Key/Value时,它自动将Key值映射到Value,并允许获取与一个指定的Key相关联的value。在Hashtable中主要使用Add、Remove两个方法对哈希表进行操作。Add方法用于将带有指定键和值的元素添加到Hashtable中;Remove方法用于从Hashtable中移除带有指定键的元素。
示例将介绍如何创建一个Hashtable,如何添加项、移除项以用如何遍历Hashtable。程序代码如下:
- using System.Collections;//引入命名空间
- namespace _4
- {
- class HashtableTest
- {
- static void Main(string[] args)
- {
- //实例化Hashtable类的对象
- Hashtable student=new Hashtable ();
- //向Hashtable中添加元素
- student.Add("S1001","Tom");
- student.Add("S1002", "Jim");
- student.Add("S1003", "Lily");
- student.Add("S1004", "Lucy");
- //遍历Hashtable
- foreach (DictionaryEntry element in student)
- {
- string id = element.Key.ToString ();
- string name = element.Value.ToString ();
- Console.WriteLine("学生的ID:{0} 学生姓名:{1}",id,name);
- }
- //移除Hashtable中的元素
- student.Remove("S1003");
- }
- }
- }
说明:Hashtable不能包含重复的key。如果调用Add 方法来添加一个keys数组中已有的key,就会抛出异常。为了避免这种情况,可以使用ContainsKey方法来测试哈希表中是否包含一个特定的Key。
5.SortedList类
SortedList类也是键/值对的集合,但与哈希表不同的是这些键/值对是按键排序,并可以按照键和索引访问。在SortedList中主要使用Add、Remove、RemoveAt三个方法对SortedList进行操作。Add方法用于将带有指定键和值的元素添加到SortedList中;Remove方法用于从SortedList中移除带有指定键的元素;RemoveAt方法用于移除SortedList的指定索引处的元素。
示例将介绍如何创建一个SortedList,如何添加项、移除项以用如何遍历SortedList。程序代码如下:
- using System.Collections;//引入命名空间
- namespace _5
- {
- class SortedListTest
- {
- static void Main(string[] args)
- {
- //实例化SortedListTest类的对象
- SortedList student = new SortedList();
- //向SortedList中添加元素
- student.Add("S1001", "Tom");
- student.Add("S1003", "Jim");
- student.Add("S1002", "Lily");
- student.Add("S1004", "Lucy");
- //遍历SortedList
- foreach (DictionaryEntry element in student)
- {
- string id = element.Key.ToString();
- string name = element.Value.ToString();
- Console.WriteLine("学生的ID:{0} 学生姓名:{1}", id, name);
- }
- //移除SortedList中key为“S1003”的元素
- student.Remove("S1003");
- //移除SortedList中索引为“”的元素,即第一个元素
- student.RemoveAt();
- }
- }
- }
说明:同样SortedList也不能包含重复的key。而且使用foreach语句遍历SortedList对象时,会返回DictionaryEntry对象。该对象将根据Key属性,以排序后的顺序返回。
.NET中的Queue和Stack的更多相关文章
- C#10在List, Queue 以及Stack中使用EnsureCapacity方法来提升性能
简介 在今天的文章中,我们将介绍 C# 10 中引入的一项新功能.这是已添加到 List.Queue 和 Stack 集合中的 EnsureCapacity 方法.我们将讨论为什么我们应该使用这个方法 ...
- ASP.NET MVC深入浅出系列(持续更新) ORM系列之Entity FrameWork详解(持续更新) 第十六节:语法总结(3)(C#6.0和C#7.0新语法) 第三节:深度剖析各类数据结构(Array、List、Queue、Stack)及线程安全问题和yeild关键字 各种通讯连接方式 设计模式篇 第十二节: 总结Quartz.Net几种部署模式(IIS、Exe、服务部署【借
ASP.NET MVC深入浅出系列(持续更新) 一. ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态模 ...
- 数据结构与算法(4) -- list、queue以及stack
今天主要给大家介绍几种数据结构,这几种数据结构在实现原理上较为类似,我习惯称之为类list的容器.具体有list.stack以及queue. list的节点Node 首先介绍下node,也就是组成li ...
- deque、queue和stack深度探索(下)
deque如何模拟连续空间?通过源码可以看到这个模型就是通过迭代器来完成. 迭代器通过重载操作符+,-,++,--,*和->来实现deque连续的假象,如上图中的 finish-start ,它 ...
- Scala 深入浅出实战经典 第39讲:ListBuffer、ArrayBuffer、Queue、Stack操作代码实战
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...
- jQuery动画高级用法(上)——详解animation中的.queue()动画队列插队函数
决定对animate方面做一些总结,希望能给大家一些启发和帮助 从一个实际应用谈起 今天不谈animate().fadeIn().fadeOut().slideUp().show().hide()诸如 ...
- C++中的queue类、QT中的QQueue类
C++中的queue 实现一种先进先出的数据结构,是一个模板类 头文件 #include<queue> 用法(以int型为例): queue<int> Q; //定义一个int ...
- C# Queue 和Stack的实现
Queue 和Stack的使用就不用多说吧,一个是先进先出,一个是后进先出. 这里我主要关注其实现原理. queue的实现如下: public class Queue<T> : IEnum ...
- C++关于vector、queue、stack、priority_queue的元素访问
vector.queue.stack.priority_queue对元素进行元素访问时,返回的是对应元素的引用.
随机推荐
- Lotus 迁移到Exchange POC 之 新建2007 服务器!
我们登录到Exchange 2007 服务器,由于需要对AD进行扩展,我们首先必须完成架构扩展,由于默认没有ldifde工具,所以我们需要执行servermanagercmd –I rsat-adds ...
- Dubbo远程调用服务框架原理与示例
Dubbo 是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成. 主要核心部件: Remoting: 网络通信框架 ...
- linux内核完全注释之微型计算机组成结构
计算机组成原理 1.传统计算机计算机组成框图 CPU通过地址线.数据线.控制线组成的本地总线(或内部总线),与系统的其他部分进行数据通信,地址线用于提供内存或I/O设备的地址,指明所需读写数据的具体操 ...
- C:预编译指令
预编译 关于编译 参考 关于宏定义 参考 预编译又称为预处理,是做些代码文本的替换工作处理#开头的指令,比如拷贝#include包含的文件代码,#define宏定义的替换,条件编译等,就是为编译做的预 ...
- 在Button的click事件中引起客户端JavaScript
void action1_Execute(object sender, SimpleActionExecuteEventArgs e) { WebWindow.CurrentRequestWindow ...
- 使用Office-Word的博客发布功能(测试博文)
本人打算在博客园开博,但平时收集和整理资料都在OneNote中,又不想在写博客时还要进行复制粘贴操作,于是就想到了Microsoft Office自带的博客发布功能.在此做了一下测试,发布了此博文. ...
- 异步文件上传组件 Uploader
Uploader是非常强大的异步文件上传组件,支持ajax.iframe.flash三套方案,实现浏览器的全兼容,调用非常简单,内置多套主题支持 和常用插件,比如验证.图片预览.进度条等,广泛应用于淘 ...
- 使用 preferredStatusBarStyle 设置状态栏颜色
iOS9之前,在plist文件中 插入一个新的key,名字为View controller-based status bar appearance,并将其值设置为NO. 然后敲入代码: [UIAppl ...
- sun.misc.BASE64Encoder和sun.misc.BASE64Encoder 找不到解决的方法
1.右键项目->属性->java bulid path->jre System Library->access rules->resolution选择accessible ...
- 推荐几个可以与PhoneGap很好搭配的UI框架
- xui.js:可以被视作是jquery在phonegap上的替代品,挺好用的- jq.mobi:同上,不过体积比xui.js要大,一般还是用xui.js- jq.ui:jq.mobi配套的UI框架 ...