栈和队列+泛型

embedded/2024/12/22 9:38:00/

也是System.Collections下的数据结构类,存储的也是Object类型的对象。

Stack 名字=new Stack();

Count:实际拥有的元素个数;

栈的释放顺序是先进后出(先进后出)

压栈——Push(object 对象)把这个对象添加到栈。

弹栈——Pop() 把栈顶的元素弹出来。

Peek() 返回栈顶的元素,不删除。

在遍历弹栈的时候要注意,Pop方法会删除你的对象,导致Count属性发生改变,所以,应该用一个变量存储一下一开始的Count值根据这个变量,来弹栈,就可以把栈中所有的数据弹出去。

队列

是System.Collections下的数据结构类,存储Object类型对象。

Queue que=new Queue();

队列的释放顺序是先进先出。

属性 Count:该结构包含的元素个数。

方法:EnQueue(object value)  进入队列的末尾处。

DeQueue() 返回并移除队列最前面的那个元素。

Peek() 把队列中队首的元素返回,但不删除。

泛型

因为我们在编程中想先不定义数据类型,只想先写逻辑,就可以使用Object类型,这样我的逻辑就适用于所有类型,但是在运行中,Object类型的变量会需要转换到对应类型,浪费资源,所以出现泛型,来替代Object类型的方案。

使用泛型,可以让我们延迟定义数据类型,来编写程序。

泛型是一种将逻辑应用到不同数据类型上的机制,可以通过类型替代符暂时替代参数的数据类型,这样只需要在编译的时候,编译器会自动将该替代符编译成对应数据类型来处理。

泛型方法

定义泛型方法

访问修饰 返回类型 方法名<T,U>(T参数  U参数){}

我们可以在方法名后使用<类型替代符>来定义一个泛型方法。

在使用的时候 方法名<数据类型>(参数)。

泛型示例
    class Program{static void Main(string[] args){Console.WriteLine(Add<int>(10,20));}public static string Add<T>(T a, T b){return a.ToString() + b.ToString();}}

我们可以在方法名后使用<类型替代符>来定义一个泛型方法

方法定义好后,在调用泛型方法时,应该在<>括号内填上对应的类型 。

使用范围

当你的方法适用于所有数据类型的时候,可以使用泛型来代替Object类型,以节省资源。

泛型类
访问修饰符 class 类名<T>{T 成员;
}

类型替代符的作用:可以让我们先不定义数据类型,只管逻辑,在调用此方法或者此类对象时,才在<>里填上对应类型,这样我这段逻辑或者说这个类结构就可以适用于所有数据类型,而且要比Object类型节省资源。

该系列专栏为网课课程笔记,仅用于学习参考。 


http://www.ppmy.cn/embedded/104667.html

相关文章

解决线程中使用线程锁

问题&#xff1a;多线程操作同一个对象&#xff0c;利用锁保证数据操作的原子性 解决方案&#xff1a;使用线程锁 简要说明&#xff1a;线程锁本质上就是添加一个公共状态量&#xff0c;当线程拿到状态量后&#xff0c;则继续执行&#xff0c;否则就等待 扩展1&#xff1a;自…

随手记:小程序体积超出2M包大小如何优化

小程序的包体积限制是2M&#xff0c;超出包大小如何优化 先简单列出&#xff0c;最近比较忙&#xff0c;后续优化明细&#xff0c;有着急的先留言踢我 1.分包 2.图片放到服务器 3.大功能需求内嵌H5&#xff08;但分享会收到影响&#xff09; 4.代码压缩设置 5.删除多余代码

从0到DevOps(1)-初步了解DevOps和容器

DevOps从提出以来陆续成为行业普遍实践&#xff0c;目前是数字化生产普遍不可或缺的信息底座。本系列文章旨在系统性的阐述与认识DevOps, 了解企业实践里DevOps的实际面貌。 什么是DevOps? DevOps 是一套实践、工具和文化理念&#xff0c;为实现用户不断的软件功能和可用性要…

达梦数据库兼容Quartz定时框架

1、背景 近期项目中需要使用达梦数据库&#xff0c;现将mysql数据库切换为达梦数据库&#xff0c;其中兼容Quartz定时框架报错如下&#xff1a; 2、解决方案 2.1 起初配置完&#xff1a;达梦数据库驱动直接启动项目直接报错&#xff0c; 后面在yml中配置数据库表名前缀&…

Golang | Leetcode Golang题解之第383题赎金信

题目&#xff1a; 题解&#xff1a; func canConstruct(ransomNote, magazine string) bool {if len(ransomNote) > len(magazine) {return false}cnt : [26]int{}for _, ch : range magazine {cnt[ch-a]}for _, ch : range ransomNote {cnt[ch-a]--if cnt[ch-a] < 0 {r…

计算机网络803-(3)数据链路层

目录 一.数据链路两种类型 二.使用点对点信道的数据链路层 1. 数据链路和帧 2.数据链路层传送的是帧 三.三个基本问题 1.封装成帧 2.透明传输 ①字节填充法 ②其他方法&#xff1a;字符计数法&#xff0c;比特填充法&#xff0c;违规编码 3. 差错检测 &#xff08;1…

程序员为啥突然会变成这么辣鸡的一个行业?

记得刚踏出学校&#xff0c;开始工作的时候&#xff0c;作为一个软件行业的从业者&#xff0c;我一直都在考虑&#xff0c;如何精进自己的技术&#xff0c;去研究一些底层的技术&#xff0c;哪怕工作中根本用不到这些东西。 因为在我心目中&#xff0c;我所属的行业是IT行业&am…

element的日期时间修改时间没有秒以及默认的时间时分修改

<el-form-item label"上架时间" required"required"><el-form:model"courseForm"ref"unmountFormRef"inlinestyle"text-align: left"label-position"left":rules"sjtimeRules"><el-form…