C#核心知识回顾——10.List、Dictionary、数据结构

1.List

 List<int> list = new List<int>();  List<String> strings = new List<String>();//增list.Add(0);list.Add(1);List<int> ints = new List<int>();ints.Add(0);list.AddRange(ints);//插入list.Insert(0, 1);// 位置0插入1//删//1.移除指定元素list.Remove(0);//2.移除指定位置元素list.RemoveAt(0);//3.清空list.Clear();list.Add(1);list.Add(2);list.Add(3);list.Add(4);//查//1.得到指定位置的元素Debug.Log(list[1]);//2.查看元素是否存在if (list.Contains(0)){Debug.Log("存在0");}//3.正向查找元素位置//找到返回位置找不到返回-1int index = list.IndexOf(0);Debug.Log(index);//4.反向查找元素位置// 找到返回位置找不到返回 - 1int indexlast = list.LastIndexOf(0);Debug.Log(indexlast);//改list[0] = 99;//遍历for (int i = 0; i < list.Count; i++){Debug.Log(list[i]);}foreach (int item in ints){Debug.Log(item);}

2.Dictionary:

Dictionary<int,string> dic = new Dictionary<int,string>();//增        dic.Add(1, "123");dic.Add(2, "234");dic.Add(3, "345");//删//1.只能通过键去删除,删除不存在的键没反应dic.Remove(1);dic.Remove(4);//2.清空dic.Clear();dic.Add(1, "123");dic.Add(2, "234");dic.Add(3, "345");//查//1.通过键查看值//找不到直接报错!!!!!!Debug.Log(dic[1]);//2.查看是否存在//根据键查if (dic.ContainsKey(1)) { Debug.Log("存在键为1"); };//根据值查if (dic.ContainsValue("123")) { Debug.Log("存在值为123的"); };//改dic[1] = "999";//遍历//1.遍历键//2.遍历值//3.遍历全部foreach (var item in dic.Keys){Debug.Log(item);Debug.Log(dic[item]);}foreach (var item in dic.Values){Debug.Log(item);}foreach (KeyValuePair<int,string> item in dic){Debug.Log("键" + item.Key + "值" + item.Value);}

 

string[] str = { "壹", "贰", "叁", "肆", "伍","陆", "柒", "捌", "玖", "拾" }; Dictionary<string,string> dic = new Dictionary<string,string>();for (int i = 0; i < str.Length; i++){dic.Add(i.ToString(), str[i]);}string rang = UnityEngine.Random.Range(0,1000).ToString();//Debug.Log(rang);foreach (var item in rang){if(dic.ContainsKey(item.ToString())){ Debug.Log(dic[item.ToString()]);}}

数据结构:
数据结构是计算机存储、组织数据的方式(规则)
数据结构是指相互之间存在一种或多种特定关系的数据元素的集合.
比如自定义的一个类也可以称为一种数据结构自己定义的数据组合规则
简单点理解,就是人定义的存储数据和表示数据之间关系的规则而已

常用的数据结构(前辈总结和制定的一些经典规则)
数组、栈、队列、链表、树、图、堆、散列表(哈希表)

线性表是一种数据结构,是由n个具有相同特性的数据元素的有限序列
比如数组、Array List、Stack、Queue、链表等等

顺序存储和链式存储是数据结构中两种存储结构
数组、Stack、Queue、List、Array List——顺序存储
只是数组、Stack、Queue的组织规则不同而已

顺序存储:
用一组地址连续的存储单元依次存储线性表的各个数据元素

单向链表、双向链表、循环链表一链式存储

链式存储(链接存储):
用一组任意的存储单元存储线性表中的各个数据元素

public class test : MonoBehaviour
{    private void Start(){LinkList<int> linkList = new LinkList<int>();linkList.Add(0);linkList.Add(1);linkList.Add(2);linkList.Add(3);LinkNode<int> node = linkList.head;while (node != null){Debug.Log(node.value);node = node.nextNode;}linkList.Remove(2);node = linkList.head;while (node != null){Debug.Log(node.value);node = node.nextNode;}linkList.Remove(0);node = linkList.head;while (node != null){Debug.Log(node.value);node = node.nextNode;}}
}
class LinkNode<T>
{public T value;public LinkNode<T> nextNode;public LinkNode(T t){this.value = t;}
}
class LinkList<T>
{public LinkNode<T> head;public LinkNode<T> tail;public void Add(T value){LinkNode<T> node = new LinkNode<T>(value);if(head == null){head = node;tail =node;}else{tail.nextNode = node;tail = node;}}public void Remove(T value){if(head == null){return;}if (head.value.Equals(value)){head = head.nextNode;如果头结点被移除,发现头结点变空,证明只有一个节点,尾也要置空if (head == null){tail = null;}return;}LinkNode<T> node = head;while (node.nextNode != null) { if(node.nextNode.value.Equals(value)){当前找到的元素上个节点,指向自己的下个节点。node.nextNode = node.nextNode.nextNode;break;}node = node.nextNode;}}
}

顺序存储和链式存储的优缺点

从增删查改的角度去思考:
增:链式存储 计算上 优于顺序存储(中间插入时链式不用像顺序一样去移动位置)
删:链式存储 计算上 优于顺序存储(中间删除时链式不用像顺序一样去移动位置)
查:顺序存储 使用上 优于链式存储(数组可以直接通过下标得到元素,链式需要遍历)
改:顺序存储 使用上 优于链式存储(数组可以直接通过下标得到元素,链式需要遍历)

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

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

相关文章

使用GPIO来模拟UART

前言 最近在看一些秋招的笔试和面试题&#xff0c;刚好看到一个老哥的经验贴&#xff0c;他面试的时候被问到了如果芯片串口资源不够了该怎么办&#xff1f;其实可以用IO口来模拟串口&#xff0c;但我之前也没有具体用代码实现过&#xff0c;借此机会用32开发板上的两个IO口来…

从0开始,手写MySQL数据管理器DM

说在前面 从0开始&#xff0c;手写一个MySQL的学习价值在于&#xff1a; 可以深入地理解MySQL的内部机制和原理&#xff0c;MySQL可谓是面试的绝对重点和难点&#xff0c; 尼恩曾经指导过的一个7年经验小伙&#xff0c;凭借精通MySQL 搞定月薪40K。 从而更好地掌握MySQL的使…

前端实现pdf,图片,word文件预览

前端实现文件预览功能 需求&#xff1a;实现一个在线预览pdf、excel、word、图片等文件的功能。 介绍&#xff1a;支持pdf、xlsx、docx、jpg、png、jpeg。 以下使用Vue3代码实现所有功能&#xff0c;建议以下的预览文件标签可以在外层包裹一层弹窗。 图片预览 iframe标签能够将…

Vue3 JSX 插槽、v-model 的用法以及 React JSX 的区别

前言 写这篇文章的初衷是&#xff0c;Vue3 JSX 部分与 React JSX 容易混淆&#xff0c;比如如本文所说的 slot & v-model&#xff0c; 如果你是第一次接触 JSX&#xff0c;可先阅读前面写过的 React & JSX 日常用法与基本原则 来对 JSX 有一个整体的认知以及比较两者间…

架构重构|性能和扩展性大幅提升的Share Creators智能数字资产管理软件3.0

作为数字资产管理行业的领军者&#xff0c;Share Creators智能数字资产管理软件持续致力于帮助企业和团队智能化管理数字资产&#xff0c;提升工业化管线制作效率。经过本次重构&#xff0c;Share Creators 3.0版本重装上阵&#xff0c;全面更新的服务架构标志着软件整体性能的…

2023最新ChatGPT商业运营网站源码+支持ChatGPT4.0+新增GPT联网功能+支持ai绘画+实时语音识别输入+用户会员套餐+免费更新版本

2023最新ChatGPT商业运营网站源码支持ChatGPT4.0新增GPT联网功能支持ai绘画实时语音识别输入用户会员套餐免费更新版本 一、AI创作系统二、系统程序下载三、系统介绍四、安装教程五、主要功能展示六、更新日志 一、AI创作系统 提问&#xff1a;程序已经支持GPT3.5、GPT4.0接口…

磁盘镜像软件

什么是磁盘镜像 磁盘镜像是存储在计算机磁盘中的数据的副本或副本。磁盘镜像将包含数据存储设备的内容&#xff0c;并复制此类设备的结构。它还将包含操作系统分区。 磁盘镜像本质上是一种从主系统复制操作系统和存储在磁盘中的数据以将其分发到其他目标计算机的方法。自动化…

有源差分探头的电压限定和检查步骤

为了使传统示波器能够显示和测试高共模电压的电路波形&#xff0c;有源差分探头对示波器测量性能延伸到了电子功率变换器、 逆变器、 电机的速度控制、 开关电源和许多应用程序的测试。 差分探头外观构成&#xff1a; A-输出线&#xff1a;连接示波器的 BNC 输出连接头和辅助性…

Vscode——python代码调试时,列表(变量)内容显示不全的一种解决办法

一、情况描述 列表维度是(1080,1920)&#xff0c;但只能看到前500行&#xff0c;后面的看不到了。 二、解决办法1——添加到监视 右键变量&#xff0c;选择 添加到监视 编辑表达式 三、解决办法2——数据查看器中查看值 右键变量&#xff0c;选择 在数据查看器中查看值&…

瑞吉外卖-Day02

title: 瑞吉外卖-Day02 abbrlink: ‘1’ date: 2023-04-1 19:30:00 瑞吉外卖-Day02 课程内容 完善登录功能新增员工员工信息分页查询启用/禁用员工账号编辑员工信息 分析前端页面效果是如何实现的 为什么点击左边 右边会根着变化 [外链图片转存失败,源站可能有防盗链机制…

nodejs-pm2管理js并发/自动重启/恢复等

目录 一、nodejs安装二、启动运行js三、实用功能1-pm2对进程名起别名四、实用功能2-pm2启动多个进程五、实用功能3-pm2内存限制自动重启六、实用功能4-服务器宕机前保存记录恢复进程 一、nodejs安装 nodejs安装使用nohup后台启动项目&#xff0c;倒是解决了控制台问题&#xf…

高适的逆袭之路

骆宾王7岁咏鹅&#xff0c;王勃10岁写论文&#xff0c;王维18岁名震天下。 高适50岁才步入仕途。 父亲官居刺史&#xff0c;祖父正三品还封了平原郡公&#xff0c;拿着将门虎子剧本的高适&#xff0c;却因父亲早逝&#xff0c;荣耀和显赫已成过往云烟。能握住的&#xff0c;是…