【C#每日一记】常用泛型数据结构类及题单实践回顾

在这里插入图片描述


👨‍💻个人主页:@元宇宙-秩沅

👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

👨‍💻 本文由 秩沅 原创

👨‍💻 收录于专栏unity之c#专题篇

在这里插入图片描述

🅰️



文章目录

    • 🅰️
    • 常用泛型数据结构类及题单实践回顾
    • 🎶(==A==)<font color=green >常用泛型数据结构类——List泛型类
    • 🎶(==B==)<font color=green >常用泛型数据结构类——Dictionary泛型类
    • 🎶(==C==)<font color=green >数据结构存储方式——顺序存储和链式存储
    • 🎶(==D==)<font color=green >常用泛型数据结构类——LinkedList泛型类
    • 🎶(==E==)<font color=green >常用泛型数据结构类——泛型栈和队列
    • 🎶(==F==)<font color=green >常用数据容器的不同应用情况
    • 🎶(==H==)实践——List类
    • 🎶(==J==)实践——Dictionary类
    • 🎶(==L==)实践——顺序存储和链式存储
    • 🎶(==M==)实践——LinkedList类
    • 🎶(==N==)实践
    • 🅰️


常用泛型数据结构类及题单实践回顾


🎶(A常用泛型数据结构类——List泛型类


在这里插入图片描述
在这里插入图片描述


🎶(B常用泛型数据结构类——Dictionary泛型类


在这里插入图片描述
在这里插入图片描述

  • hashtable的遍历 和 Dictionary 遍历API的区别对比
    +

🎶(C数据结构存储方式——顺序存储和链式存储


在这里插入图片描述
在这里插入图片描述


🎶(D常用泛型数据结构类——LinkedList泛型类


在这里插入图片描述
在这里插入图片描述


🎶(E常用泛型数据结构类——泛型栈和队列


  • 本质API和Stack类Queue类一样,加上了泛型
  • 并且前者再system.collection命名空间里
  • 后者在system.collection,Generic里

🎶(F常用数据容器的不同应用情况


总结数组,list,Dectionary,Stack,Queue,LinkedList等存储容器。我们怎么来使用

  • 数组:简单的数据类型存储的时候,或者只需要查改数据的时候

  • List:它是ArraryList的泛型升级,适合一切对象的存储,适合查改的情况下使用

  • LinkeList:它是泛型双向链表,适合频繁增删的数据对象的情况下使用
    在这里插入图片描述

  • Dectionary:它是Hashtable的泛型升级,适合键值对象的存储
    在这里插入图片描述

  • Stack:适合先进后出的情况下使用

  • Queue:适合先进先出的情况下使用
    在这里插入图片描述


🎶(H实践——List类


  • 实践经验

    1.构造函数中调用自身对象用this
    2.LIst的函数和ArrryList的函数基本一致
    3.List和ArraryList最大的区别就是前者的本质是泛型数组,后者的本质是Object数组
    4.继承的时候,子类默认先调用父类的构造函数

在这里插入图片描述

  /// <summary>/// 13.List的删除和存取/// </summary>//class Program// {//List和ArrayList的区别:前者结合了泛型,避免了拆箱装箱,效率更加优化//static void Main(string[] args)//{ //    List<int> text = new List<int>();//    int[] arrary = new int[10]{ 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 };//    int i = 0;//    while (i<arrary.Length)//    {//        text.Add(arrary[i++]);//    }//    text.RemoveAt(5);//    foreach (int item in text)//    {//        Console.WriteLine(item);//    }//}//}///在构造函数中用List存取元素class Monster{static public  List<Monster> control = new List<Monster>();public Monster(){control.Add(this); }virtual public void attack() { }}class Boss : Monster{public override void attack(){Console.WriteLine("放大招");}}class Gablin : Monster{public override void attack(){Console.WriteLine("哥布林的技能");}}class Program{static void Main(string[] args){Boss boss1 = new Boss();Gablin boss2 = new Gablin();Monster text = new Monster();foreach (Monster  item in Monster .control ){item.attack();}}}

🎶(J实践——Dictionary类


  • 实践经验

    1.不能再foreach迭代器里面修改键值不然会报错
    2.只要存在从一个数据获得另一个数据就可以应用Dictionary
    在这里插入图片描述
private  Dictionary<int, string> text = new Dictionary<int, string>();public Program(){string[] upperArrary = { "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖", "拾" };for (int i = 0; i < upperArrary.Length; i++){text.Add(i + 1, upperArrary[i]);}}public void  Upper( string num  ){for (int i = 0; i < num.Length; i++){int index = num[i] - '0';Console.Write(text[index]);}           }static void Main(string[] args){Program Exam = new Program();Console.WriteLine(Exam.text[3]);try{           Console.WriteLine("请输入一个不超过三位数的整数");int num = int.Parse(Console.ReadLine());Exam.Upper(num.ToString());   }catch (Exception){throw;}}

在这里插入图片描述

Dictionary<char, int> text = new Dictionary<char, int>();public void Multiplay(string arrray ){for (int i = 0; i < arrray.Length; i++){if(text.ContainsKey(arrray[i])){text[arrray[i]] += 1;}else{text.Add(arrray[i],1);}}}public  void Print(){foreach (KeyValuePair<char ,int> item in text){Console.WriteLine(item);}}static void Main(string[] args){Program text = new Program();string arrary = "Welcome to Unity World";string Arrary = arrary.ToUpper();         text.Multiplay(Arrary);text.Print();}

在这里插入图片描述


🎶(L实践——顺序存储和链式存储


  • 实践经验

    1.最大的应用区别在于顺序存储适合查改,链式存储适合增删
    2.构建链表时要考虑全面,考虑到每个节点相互之间的关系,看代码的逻辑性是否严谨
    在这里插入图片描述
 //1.//顺序存储是一组连续的存储单元依次存储在线性表中的存储 方式(连续存储)//链式存储是将一组任意不连续的存储单元存储在线性表中存储方式(任意存储)//2.//顺序存储的查改效率大于链式存储//链式存储的增删效率大于顺序存储//3.//常用的数据结构有:数组,链表,栈,队列,数,图,堆,散列表class LinkedNode<T>{   public T vaule;public LinkedNode(T Vaule){this.vaule = Vaule;}public LinkedNode<T> peakLink = null;public LinkedNode<T> nextLink = null;}class Link<T>{private int count = 0;private LinkedNode<T> head;private LinkedNode<T> last;public int Count { get => count;  }public LinkedNode<T> Peak { get => head; }public LinkedNode<T> Last { get => last; }public void Add(LinkedNode<T> node) //添加节点{if (head == null){head = node;last = node;count++;}else{//尾插法        LinkedNode<T> temp = last; ;last.nextLink = node;          last = node;last.peakLink = temp;count++;}}public void RemoveAt(int index) //删除节点{LinkedNode<T> Lnode = head ;int temp = 1;if (index > count || index < 1){Console.WriteLine("超出链表规定范围,请输入正确范围进行移除操作!");return;}else if (index == 1){Console.WriteLine("指令为删除头节点");head = head.nextLink;}else if (index == count){Console.WriteLine("指令为删除尾节点");last = last.peakLink;Console.WriteLine("此时尾节点为:" + last.vaule);last.nextLink = null;}else{while (true){if (temp == index){if (Lnode.peakLink != null)Lnode.peakLink.nextLink = Lnode.nextLink;if (Lnode.nextLink != null)Lnode.nextLink.peakLink = Lnode.peakLink;break;}temp++;count--;Lnode = Lnode.nextLink;}}}public void Print() //遍历所有节点{LinkedNode<T> Lnode = head;while(Lnode != null ){Console.WriteLine("节点的值为:"+Lnode.vaule );Lnode = Lnode.nextLink;}}}class Program{static void Main(string[] args){Program text = new Program();LinkedNode<int> node1 = new LinkedNode<int>(1);LinkedNode<int> node2 = new LinkedNode<int>(2);LinkedNode<int> node3 = new LinkedNode<int>(3);Link<int> list = new Link<int>();list.Add(node1);list.Add(node2);list.Add(node3);Console.WriteLine("此时链表的长度为:" + list.Count);list.RemoveAt(2);list.Print();}       }

🎶(M实践——LinkedList类


  • 实践经验

    1.本质上就是泛型的双向链表
    2.当需要进行节点操作的时候,才用到节点类的API
    3.所以需要掌握LinkedList 和LinkedListNode两个类

    在这里插入图片描述
LinkedList<int> list = new LinkedList<int>();Random rand = new Random();int temp = 10;while(temp-->=1){list.AddFirst(rand.Next(101));}//foreach遍历//foreach (var item in list)//{//    Console.WriteLine(item);//}LinkedListNode<int> node = list.First;//节点遍历——头节点遍历Console.WriteLine("从头部开始 遍历了");while(node!= null ){Console.WriteLine(node.Value);node = node.Next;}//节点遍历 ——尾节点遍历\Console.WriteLine("从尾部开始 遍历了");node = list.Last;while (node != null){Console.WriteLine(node.Value);node = node.Previous ;}

🎶(N实践


总结数组,list,Dectionary,Stack,Queue,LinkedList等存储容器。我们怎么来使用

  • 数组:简单的数据类型存储的时候,或者只需要查改数据的时候
  • List:它是ArraryList的泛型升级,适合一切对象的存储
  • LinkeList:它是泛型双向链表,适合频繁增删的数据对象的情况下使用
  • Dectionary:它是Hashtable的泛型升级,适合键值对象的存储
  • Stack:适合先进后出的情况下使用
  • Queue:适合先进先出的情况下使用

🅰️


⭐【Unityc#专题篇】之c#进阶篇】

⭐【Unityc#专题篇】之c#核心篇】

⭐【Unityc#专题篇】之c#基础篇】

⭐【Unity-c#专题篇】之c#入门篇】

【Unityc#专题篇】—进阶章题单实践练习

⭐【Unityc#专题篇】—基础章题单实践练习

【Unityc#专题篇】—核心章题单实践练习


你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!


在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/112985.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

内网隧道技术学习

1. 隧道技术 在进行渗透测试以及攻防演练的时候&#xff0c;通常会存在各种边界设备、软硬件防火墙、IPS等设备来检测外部连接情况&#xff0c;这些设备如果发现异常&#xff0c;就会对通信进行阻断。 那么隧道技术就是一种绕过端口屏蔽的通信方式&#xff0c;在实际情况中防…

ZooKeeper的典型应用场景及实现

文章目录 1、典型应用场景及实现1.1、 数据发布/订阅1.1.1、配置管理案列 1.2、负载均衡1.3、命名服务1.4、分布式协调/通知1.4.1、一种通用的分布式系统机器间通信方式 1.5、集群管理1.6、Master选举1.7、分布式锁1.7.1、排他锁1.7.2、共享锁 1.8、分布式队列 2、ZooKeeper在大…

爬虫实战之使用 Python 的 Scrapy 库开发网络爬虫详解

关键词 - Python, Scrapy, 网络爬虫 在信息爆炸时代&#xff0c;我们每天都要面对海量的数据和信息。有时候我们需要从互联网上获取特定的数据来进行分析和应用。今天我将向大家介绍如何使用 Python 的 Scrapy 库进行网络爬虫&#xff0c;获取所需数据。 1. Scrapy 简介 1.1 …

ChatGPT⼊门到精通(5):ChatGPT 和Claude区别

⼀、Claude介绍 Claude是Anthropic开发的⼀款⼈⼯智能助⼿。 官⽅⽹站&#xff1a; ⼆、Claude能做什么 它可以通过⾃然语⾔与您进⾏交互,理解您的问题并作出回复。Claude的主要功能包括: 1、问答功能 Claude可以解答⼴泛的常识问题与知识问题。⽆论是历史上的某个事件,理科…

Django(4)-Django 管理页面

创建一个管理员账号 python manage.py createsuperuser运行项目&#xff0c;访问http://127.0.0.1:8080/admin&#xff0c;可以看到管理员界面 管理页面加上投票应用 polls/admin.py from django.contrib import admin# Register your models here. from .models import …

Ae 效果:CC Glass Wipe

过渡/CC Grid Wipe Transition/CC Grid Wipe CC Glass Wipe&#xff08;CC 玻璃擦除&#xff09;效果用于创建一种基于亮度信息的擦除方式&#xff0c;过渡边缘有类似于玻璃的质感。 ◆ ◆ ◆ 效果属性说明 Completion 完成度 控制过渡效果的完成进度。 值从 0 %&#xff08;…

STM32+UART串口+DMA收发

目录 1、cubemax端配置 1.1 初始化配置 1.2 GPIO配置 1.3 UART配置 1.3.1 串口基础配置 1.3.2 DMA配置 2、keil端代码设计 2.1 初始化配置 2.2 DMA接收初始化配置 2.3 DMA发送配置 2.4 接收回调函数设置 2.5 回调函数内容代码编写 2.5.1 接收回调函数 2.5.2 发送回调…

什么是浏览器缓存(browser caching)?如何使用HTTP头来控制缓存?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 浏览器缓存和HTTP头控制缓存⭐ HTTP头控制缓存1. Cache-Control2. Expires3. Last-Modified 和 If-Modified-Since4. ETag 和 If-None-Match ⭐ 缓存策略⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击…

一文便知 GO 中mongodb 的安装与使用

MONGDB 安装与使用 咱们来回顾一下上次分享的内容&#xff1a; 如何使用log 包log 包原理和具体实现自定义日志 要是对 GO 的日志包还有点兴趣的话&#xff0c;可以查看文章 GO的日志怎么玩 ? 今天咱们来玩个简单的 mongodb 的安装和使用 MONGODB介绍 MongoDB 是一个基于…

2023年7月京东牛奶乳品行业品牌销售排行榜(京东数据挖掘)

牛奶乳品作为饮食结构的重要组成部分&#xff0c;愈发受到消费者重视。近期&#xff0c;鲸参谋监测的京东平台7月份牛奶乳品的销售数据也已出炉&#xff0c;我们一起来讨论牛奶乳品市场7月份的销售表现&#xff01; 根据鲸参谋平台的数据可知&#xff0c;7月份&#xff0c;京东…

Android-关于页面卡顿的排查工具与监测方案

作者&#xff1a;一碗清汤面 前言 关于卡顿这件事已经是老生常谈了&#xff0c;卡顿对于用户来说是敏感的&#xff0c;容易被用户直接感受到的。那么究其原因&#xff0c;卡顿该如何定义&#xff0c;对于卡顿的发生该如何排查问题&#xff0c;当线上用户卡顿时&#xff0c;在线…

Xilinx-7系列之可配置逻辑块CLB

目录 一、概览 二、CLB结构 三、Slice内部结构 3.1 SliceM结构 3.2 SliceL结构 3.3 查找表LUT 3.4 多路复用器 3.5 存储单元 3.6 进位逻辑 四、应用 4.1 分布式RAM 4.2 ROM(只读存储器) 4.3 Shift Registers&#xff08; 移位寄存器&#xff09; 4.4 存储资源容量…

储能辅助电力系统调峰的容量需求研究(matlab代码)

目录 1 主要内容 2 部分代码 3 程序结果 4 下载链接 1 主要内容 该程序参考文献《储能辅助电力系统调峰的容量需求研究》&#xff0c;是一个很常规很经典的matlab优化代码&#xff0c;主要是对火电、风电和储能等电力设备主体进行优化调度&#xff0c;在调峰能力达不到时采…

总结974

今日共计学习12h&#xff0c;日计划完成90%.今晚又把总结时间占用了&#xff0c;明天预留0.5h进行月总结吧&#xff0c;重新制定学习时间表&#xff0c;之前的已经用不了。 跟一个学府的老师聊了聊天&#xff0c;感觉聊完之后&#xff0c;本以为会心情舒畅&#xff0c;没想到反…

【Unity-Cinemachine相机】Cinemachine Brain属性详解

在Package Manager中下载Cinemachine 创建一个Virtual Camera&#xff0c;然后会发现Main Camera后面多出了个标志&#xff0c;而且属性也不能再修改了 因为绑定了CinemachineBrain&#xff0c;它会读取场景中某个虚拟相机的配置&#xff0c;并以此配置来控制相机的行为&#x…

XFTP上传文件出现:unknown error的解决方法

原因1&#xff1a;磁盘容量不够 查看上传的磁盘是否已经占满了&#xff0c;执行命令 df -h发现此时虚拟机的磁盘已经用尽&#xff08;只怪自己当初创建虚拟机时没有分配更多的磁盘&#xff09;&#xff0c;如下图所示 此外&#xff0c;由于磁盘空间用尽&#xff0c;Xftp上传…

拿来即用修改密码功能

<template><div><!-- 重置密码 --><el-dialogtitle"修改密码"v-model"state.resetPwdDialogVisible":showClose"state.firstLogin ! 1"width"550px"close"onCancel":close-on-click-modal"false&…

大数据开发要学习什么?学完又能做什么

学习大数据需要掌握什么语言基础&#xff1f; 1、Java基础 大数据框架90%以上都是使用Java开发语言&#xff0c;所以如果要学习大数据技术&#xff0c;首先要掌握Java基础语法以及JavaEE方向的相关知识。 2、MySQL数据库 这是学习大数据必须掌握的知识之一。数据的操作语言是…

lambda 表达式

C自学精简实践教程 目录(必读) 什么是lambda表达式&#xff1f; lambda表达式实际上就是一个类似函数的可以被调用的对象。 和函数一样可以使用圆括号调用。 只不过&#xff0c;这个函数可以定义在代码的任意位置。非常的灵活&#xff0c;自由。而函数不能定义在其他函数的…

智能化新十年,“全栈智能”定义行业“Copilot智能助手”

“智能化转型是未来十年中国企业穿越经济周期的利器”&#xff0c;这是联想集团执行副总裁兼中国区总裁刘军在去年联想创新科技大会上做出的判断&#xff0c;而2023年正值第四次工业革命第二个十年的开端&#xff0c;智能化是第四次工业革命的主题。2023年初&#xff0c;基于谷…