【Unity 3D】C#中数组、集合、栈、队列、哈希表、字典的讲解(附测试代码)

这篇具有很好参考价值的文章主要介绍了【Unity 3D】C#中数组、集合、栈、队列、哈希表、字典的讲解(附测试代码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

觉得有帮助请点赞关注收藏~~~

一、数组

数组时有序的元素序列,存在有限个相同的变量的集合叫做数组名,组成数组二点各个变量称为数组的分量,又称为数组的元素,有时也称为下标变量,用于区分数组的各个元素的数组编号称为下标。

初始化数组

datatype [] arrayname

datetype指定存储在数组中的元素的类型

[]指定数组维度

double[] balance =new double[10];

数组赋值

可以通过使用数组的下表给一个单独的数组元素赋值

 double[] balance =new double[10];

balance[0]=4500.0;

也可以再声明数组的同时给数组赋值

double[] balance ={2333.0,5333.0,24400.0};

访问数组元素

元素是通过数组名称[下标]这种方式访问的,这是通过把元素的下标放置在数组名称后的方括号中实现的

double salary=balance[4]; 

测试代码如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Test_9_1 : MonoBehaviour
{
    void Start()
    {
        int[] n = new int[5]; /* n 是一个带有 10 个整数的数组 */
        int i, j;
        /* 初始化数组 n 中的元素 */
        for (i = 0; i < 5; i++)
        {
            n[i] = i + 100;
        }
        /* 输出每个数组元素的值 */
        for (j = 0; j < 5; j++)
        {
            Debug.Log("元素[{" + j + "}] = {" + n[j] + "}");
        }
    }
}

 

多维数组

多维数组最简单的形式是二维数组,本质上是一个一维数组的列表

数组中每个元素用a[i,j]来表示的 i是行 j是列 

测试代码如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Test_9_2 : MonoBehaviour
{
    void Start()
    {
        /* 一个带有 5 行 2 列的数组 */
        int[,] a = new int[5, 2] { { 0, 1 }, { 2, 3 }, { 4, 5 }, { 6, 7 }, { 8, 9 } };
        int i, j;
        /* 输出数组中每个元素的值 */
        for (i = 0; i < 5; i++)
        {
            for (j = 0; j < 2; j++)
            {
                Debug.Log("a[{" + i + "},{" + j + "}] = {" + a[i, j] + "}");
            }
        }
    }
}

 二、集合

集合Collection是专门用于存储数据和检索数据的类,分别提供了对栈 队列 列表 哈希表的支持 大多数集合实现了相同的接口

ArrayList

该对象的大小是按照其存储的数据的多少动态扩充与收缩的,所以在声明ArrayList对象时并不需要指定它的长度

ArrayList list1=new ArrayList();
list1.Add("zhangsan");
list1.Add("5333");

从上面可以看出 ArrayList允许插入不同类型的数据,这也导致容易产生安全问题

List

List大部分操作与ArrayList相同,但是最关键的区别在于List在声明的时候需要为集合内的元素声明对象类型

List<String> list=new List<String>();

队列

队列代表了一个先进先出的对象集合,如果需要对各项元素进行先进先出的访问,则使用队列,在列表中添加一项,称为入队,从列表中删除一项,称为出队

下面列出Queue类的常用属性和方法

Count 获取Queue中包含的元素个数

Clear() 从Queue中删除所有的元素

Contains() 判断某个元素是否在Queue中

Dequeue() 删除并返回在Queue的开头的对象

Enqueue() 向Queue的末尾添加一个对象

ToArray() 复制Queue到一个新的数组中

TrimToSize()  设置容量为Queue中元素的个数

测试代码如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;


public class Test_9_3 : MonoBehaviour
{
    void Start()
    {
        Queue q = new Queue();//初始化队列
        q.Enqueue('A');//添加元素
        q.Enqueue('B');
        Debug.Log("添加元素前:");
        foreach (char item in q)
        {
            Debug.Log(item);
        }
        q.Enqueue('C');
        Debug.Log("添加元素后:");
        foreach (char item in q)
        {
            Debug.Log(item);
        }
        q.Dequeue();//删除元素
        Debug.Log("删除元素后:");
        foreach (char item in q)
        {
            Debug.Log(item);
        }
    }
}

堆栈

堆栈代表了一个后进先出的对象集合,如果需要对各项进行后进先出的访问,则使用堆栈,在列表中添加一项称为推入元素,从列表中删除一项,称为弹出元素

下面是堆栈的常用属性和方法

Count 获取Stack中包含的元素个数

Peek() 返回在Stack顶部的对象 但不删除它

Pop()  删除并返回在Stack顶部的对象

Push()  向Stack的顶部添加一个对象

ToArray() 复制Stack到一个新的数组中

 测试代码如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;


public class Test_9_4 : MonoBehaviour
{
    void Start()
    {
        Stack st = new Stack();//初始化队列
        st.Push('A');//添加元素
        st.Push('B');
        Debug.Log("添加元素前:");
        foreach (char item in st)
        {
            Debug.Log(item);
        }
        st.Push('C');
        Debug.Log("添加元素后:");
        foreach (char item in st)
        {
            Debug.Log(item);
        }
        char ch =(char)st.Peek();//返回在 Stack 的顶部的对象,但不移除它
        Debug.Log("返回在 Stack 的顶部的对象:"+ch);
        st.Pop();//删除元素
        Debug.Log("删除元素后:");
        foreach (char item in st)
        {
            Debug.Log(item);
        }
    }
}

 哈希表

哈希表类代表了一系列基于键的哈希代码组织起来的键值对,它使用键访问集合中的元素

如果使用键访问元素,则使用哈希表,而且可以识别一个有用的键值,哈希表中的每一项都有一个键值对,键用于访问集合中的项目

常用属性与方法如下

Count  包含键值对个数

IsFixedSize 判断哈希表是否具有固定大小

IsReadOnly 判断哈希表是否只读

Item 获取或设置与指定的键相关的值

Keys  获取一个ICollection 包含哈希表中的键

Values 获取一个ICollection  包含哈希表中的值

Add() 向哈希表中添加一个带有指定的键和值的元素

ContainsKey() 判断哈希表是否包含指定的键

Contains Value() 判断哈希表是否包含指定的值

Remove()  从哈希表中删除带有指定的键的元素

测试代码如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;


public class Test_9_5 : MonoBehaviour
{
    void Start()
    {
        Hashtable ht = new Hashtable();
        ht.Add("001", "张三");
        ht.Add("002", "李四");
        if (ht.ContainsValue("李四"))
        {
            Debug.Log("这个名字已经添加到名单上了");
        }
        else
        {
            ht.Add("003", "王五");
        }
        // 获取键的集合 
        ICollection key = ht.Keys;
        foreach (string k in key)
        {
            Debug.Log(k + ": " + ht[k]);
        }
    }
}

 字典

字典是一种可以让我们通过索引号查询到特定数据的数据结构类型

测试代码如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;


public class Test_9_6 : MonoBehaviour
{
    void Start()
    {
        Dictionary<string, string> students = new Dictionary<string, string>();
        students.Add("S001", "张三");//添加
        students.Add("S002", "李四");//添加
        students.Add("S003", "王五");//添加
        students["S003"] = "赵六";//修改
        students.Remove("S000"); //删除
        foreach (string key in students.Keys)//查询Keys
            Debug.Log(key);
        foreach (string value in students.Values)//查询Values
            Debug.Log(value);
        foreach (KeyValuePair<string, string> stu in students)  //查询Keys和Values
            Debug.Log("Key:" + stu.Key + "  Name:" + stu.Value);
    }
}

创作不易 觉得有帮助请点赞关注收藏~~~文章来源地址https://www.toymoban.com/news/detail-766314.html

到了这里,关于【Unity 3D】C#中数组、集合、栈、队列、哈希表、字典的讲解(附测试代码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C# 读取二维数组集合输出到Word预设表格

    目录 应用场景 设计约定 范例运行环境 配置Office DCOM 实现代码 组件库引入 核心代码 DataSet转二维数组 导出写入WORD表格 调用举例 小结 存储或导出个人WORD版简历是招聘应用系统中的常用功能,我们通常会通过应用系统采集用户的个人简历信息到数据库,许多情况下我们会读

    2024年03月23日
    浏览(36)
  • Unity 中 A*寻路(AStar,A星)的优化,二叉堆,双向队列,哈希表

    前篇:A星寻路的简单实现 A星寻路,在2D地图下使用频率较高 本篇基于上一篇文章实现的A星寻路进一步优化。利用二叉堆代替了原先openList的数据结构, 改进了path返回时的操作,以及在搜索时的性能开销。 c#中的Sort函数,在实现方面采用的是快速排序。 在日常的使用上,好

    2024年02月03日
    浏览(29)
  • Unity C# 优先队列

    实现了支持泛型的优先队列,解决Unity官方不提供优先队列的问题。 属性和字段 解释 size 队列的长度 capacity 队列的容量 IsEmpty 返回队列是否为空 Top 返回队列第一个元素 枚举 解释 PriorityQueueMode.less 最小优先队列 PriorityQueueMode.equal 只会将相等的排在一起 PriorityQueueMode.greator

    2024年02月13日
    浏览(24)
  • 【100个 Unity实用技能】☀️ | C# 检查字典中是否存在某个Key的几种方法

    老规矩,先介绍一下 Unity 的科普小知识: Unity 是 实时3D互动内容创作和运营平台 。 包括 游戏开发 、 美术 、 建筑 、 汽车设计 、 影视 在内的所有创作者,借助 Unity 将创意变成现实。 Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和

    2023年04月08日
    浏览(35)
  • 循环可变化的集合 数组 datatable 等 || c# winfrom DataGridView 动态UI下载功能

          1,使用组件DataGridView 2,使用DataSource来控制表格展示的数据来源(注意:来源需要是DataTable类型) 3,需要用到异步线程。如果是不控制数据源的话,需要使用UI安全线程;(使用Control.Invoke或Control.BeginInvoke方法) 4,DataGridView的列如果设置图片,尽量代码设置 5,DataT

    2024年02月19日
    浏览(31)
  • c# winfrom DataGridView 动态UI下载功能(内含GIF图) || 循环可变化的集合 数组 datatable 等

      1,使用组件DataGridView 2,使用DataSource来控制表格展示的数据来源(注意:来源需要是DataTable类型) 3,需要用到异步线程。如果是不控制数据源的话,需要使用UI安全线程;(使用Control.Invoke或Control.BeginInvoke方法) 4,DataGridView的列如果设置图片,尽量代码设置 5,DataTable类型

    2024年02月20日
    浏览(27)
  • 数组(Arrays)和列表(Lists) — Unity C#

    数组是 C# 提供的最基本的集合。将它们视为一组值的容器,在编程术语中称为元素,每个值都可以单独访问或修改。 · 数组可以存储任何类型的值;所有元素必须属于同一类型。 · 数组的长度或元素数量是在创建时设置的。 · 如果创建时没有指定初始值,则每个元素都会被

    2024年01月23日
    浏览(45)
  • unity c# 读写 json 数组(FromJson / ToJson)

    写入的一定是 一个完整的 object ,不能是 object 的数组 ref tojson 定义对象为 读取的时候一定要是一个 完整的 object ref json must represent an object type 如果 text 的格式为一个json对象: 那么定义对象为 读取格式为 如果 text 的格式为一堆json对象的列表: 那么定义对象为 读取的格式为

    2024年02月07日
    浏览(27)
  • unity的C#学习——数组、字符串和结构体

    数组是一个存储相同类型元素的固定大小的顺序集合。数组是用来存储数据的集合,通常认为数组是一个同一类型变量的集合。 所有的数组都是由 连续的内存位置 组成的。最低的地址对应第一个元素,最高的地址对应最后一个元素。 声明数组变量并不是声明 number0、number

    2024年02月10日
    浏览(36)
  • Python 哈希表的实现——字典

    哈喽大家好,我是咸鱼 接触过 Python 的小伙伴应该对【字典】这一数据类型都了解吧 虽然 Python 没有显式名称为“哈希表”的内置数据结构,但是字典是哈希表实现的数据结构 在 Python 中,字典的键(key)被哈希,哈希值决定了键对应的值(value)在字典底层数据存储中的位

    2024年02月05日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包