浅析 c# Queue

简介: 1、Queue定义 System.Collections.Queue类表示对象的先进先出集合,存储在 Queue(队列) 中的对象在一端插入,从另一端移除。   2、优点 1、能对集合进行顺序处理(先进先出)。

1、Queue定义

System.Collections.Queue类表示对象的先进先出集合,存储在 Queue(队列) 中的对象在一端插入,从另一端移除。

 

2、优点

1、能对集合进行顺序处理(先进先出)。

2、能接受null值,并且允许重复的元素。

 

3、 Queue的构造器

构造器函数

注释

Queue ()

初始化 Queue 类的新实例,该实例为空,具有默认初始容量(32)并使用默认增长因子(2.0)。

Queue (ICollection)

初始化 Queue 类的新实例,该实例包含从指定集合复制的元素,具有与所复制的元素数相同的初始容量并使用默认增长因子。

Queue (Int32)

初始化 Queue 类的新实例,该实例为空,具有指定的初始容量并使用默认增长因子。

Queue (Int32, Single)

初始化 Queue 类的新实例,该实例为空,具有指定的初始容量并使用指定的增长因子。

 

4、Queue的属性

属性名

注释

Count

获取 Queue 中包含的元素数。

 

5. 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 中元素的实际数目。

 

6、Queue的使用示例

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
class Program
{
     static void Main( string [] args)
     {
         //创建一个队列
         Queue myQ = new Queue();
         myQ.Enqueue( "The" ); //入队
         myQ.Enqueue( "quick" );
         myQ.Enqueue( "brown" );
         myQ.Enqueue( "fox" );
         myQ.Enqueue( null ); //添加null
         myQ.Enqueue( "fox" ); //添加重复的元素
 
         // 打印队列的数量和值
         Console.WriteLine( "myQ" );
         Console.WriteLine( "\tCount:    {0}" , myQ.Count);
 
         // 打印队列中的所有值
         Console.Write( "Queue values:" );
         PrintValues(myQ);
 
         // 打印队列中的第一个元素,并移除
         Console.WriteLine( "(Dequeue)\t{0}" , myQ.Dequeue());
 
         // 打印队列中的所有值
         Console.Write( "Queue values:" );
         PrintValues(myQ);
 
         // 打印队列中的第一个元素,并移除
         Console.WriteLine( "(Dequeue)\t{0}" , myQ.Dequeue());
 
         // 打印队列中的所有值
         Console.Write( "Queue values:" );
         PrintValues(myQ);
 
         // 打印队列中的第一个元素
         Console.WriteLine( "(Peek)   \t{0}" , myQ.Peek());
 
         // 打印队列中的所有值
         Console.Write( "Queue values:" );
         PrintValues(myQ);
 
         Console.ReadLine();
 
     }
 
     public static void PrintValues(IEnumerable myCollection)
     {
         foreach (Object obj in myCollection)
             Console.Write( "    {0}" , obj);
         Console.WriteLine();
     }
}

 

7.备注

1、Queue 的容量是 Queue 可以保存的元素数。Queue 的默认初始容量为 32。向 Queue 添加元素时,将通过重新分配来根据需要自动增大容量。可通过调用 TrimToSize 来减少容量。等比因子是当需要更大容量时当前容量要乘以的数字。在构造 Queue 时确定增长因子。默认增长因子为 2.0。

2、Queue 能接受空引用作为有效值,并且允许重复的元素。

3、空引用可以作为值添加到 Queue。若要区分空值和 Queue 结尾,请检查 Count 属性或捕捉 Queue 为空时引发的 InvalidOperationException异常。

目录
打赏
0
0
0
0
13
分享
相关文章
用C#构造一个队列Queue。要求此队列是循环队列,并进行入队、出队的测试。
用C#构造一个队列Queue。要求此队列是循环队列,并进行入队、出队的测试。
222 0
用C#构造一个队列Queue。要求此队列是循环队列,并进行入队、出队的测试。
C#(四十八)之三种数据结构 stack queue sortedList
堆栈(Stack):代表了一个后进先出的对象集合。当您需要对各项进行后进先出的访问时,则使用堆栈。当您在列表中添加一项,称为推入元素,当您从列表中移除一项时,称为弹出元素。 System.Collections.Queue类表示对象的先进先出集合,存储在 Queue(队列) 中的对象在一端插入,从另一端移除。 SortedList 类代表了一系列按照键来排序的键/值对,这些键值对可以通过键和索引来访问。
182 0
C#(四十八)之三种数据结构 stack queue sortedList
【c#】队列(Queue)和MSMQ(消息队列)的基础使用
原文:【c#】队列(Queue)和MSMQ(消息队列)的基础使用       首先我们知道队列是先进先出的机制,所以在处理并发是个不错的选择。然后就写两个队列的简单应用。 Queue 命名空间     命名空间:System.Collections,不在这里做过多的理论解释,这个东西非常的好理解。
1531 0
C# 编程中的堆栈(Stack)和队列(Queue)
原文:C# 编程中的堆栈(Stack)和队列(Queue) 一、什么是堆?(Heap)      堆是无序的,是一片不连续的内存域,由用户自己来控制和释放,如果用户自己不释放的话,当内存达到一定的特定值时,通过垃圾回收器(GC)来回收。
1437 0
C#常用的集合类型(ArrayList类、Stack类、Queue类、Hashtable类、SortedList类)
1.ArrayList类 ArrayList类主要用于对一个数组中的元素进行各种处理。在ArrayList中主要使用Add、Remove、RemoveAt、Insert四个方法对栈进行操作。Add方法用于将对象添加到 ArrayList 的结尾处;Remove方法用于从 ArrayList 中移除特定对象的第一个匹配项;RemoveAt方法用于移除 ArrayList 的指定索引处的元素;Insert方法用于将元素插入 ArrayList 的指定索引处。
992 0
|
4月前
|
C# 一分钟浅谈:Code Contracts 与契约编程
【10月更文挑战第26天】本文介绍了 C# 中的 Code Contracts,这是一个强大的工具,用于通过契约编程增强代码的健壮性和可维护性。文章从基本概念入手,详细讲解了前置条件、后置条件和对象不变量的使用方法,并通过具体代码示例进行了说明。同时,文章还探讨了常见的问题和易错点,如忘记启用静态检查、过度依赖契约和性能影响,并提供了相应的解决建议。希望读者能通过本文更好地理解和应用 Code Contracts。
67 3
学懂C#编程:属性(Property)的概念定义及使用详解
通过深入理解和使用C#的属性,可以编写更清晰、简洁和高效的代码,为开发高质量的应用程序奠定基础。
129 12
Unity 游戏引擎 C# 编程:一分钟浅谈
本文介绍了在 Unity 游戏开发中使用 C# 的基础知识和常见问题。从 `MonoBehavior` 类的基础用法,到变量和属性的管理,再到空引用异常、资源管理和性能优化等常见问题的解决方法。文章还探讨了单例模式、事件系统和数据持久化等高级话题,旨在帮助开发者避免常见错误,提升游戏开发效率。
144 4
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等