大家好,我是佛系工程师 ☆恬静的小魔龙☆ ,不定时更新Unity开发技巧,觉得有用记得一键三连哦。

在日常开发中,常常会用到数据集合,那么数据集合是什么呢,数据集合也没有想象中那么复杂。

数据集合就是专门用来存储数据、检索数据,以及对数据一系列操作的类。

这些类有:ArrayList数组、List列表、Queue队列、Dictionary字典、Hashtable哈希表、Stack堆栈。

在开发中,每种数据集合都有优缺点,今天就将这些数据集合进行归纳总结。

一是方便自己捋顺思路,二是可以帮助到对此理解不清晰的开发者。

这是本系列文章的第七篇:
【Unity3D数据集合】(一)数组集合Array学习
【Unity3D数据集合】(二)列表集合List及ListArray学习
【Unity3D数据集合】(三)字典Dictionary和哈希表Hashtable学习
【Unity3D数据集合】(四)堆栈Stack和队列Queue学习
【Unity3D数据集合】(五)链表LinkedList数据集合学习
【Unity3D数据集合】(六)散列集合HashSet和排序集合SortedSet学习
【Unity3D数据集合】(七)排序列表SortedList和排序字典SortedDictionary学习
【Unity3D数据集合】(八)点阵列BitArray学习

二、排序列表SortedList

排序列表SortedList是一种特殊的数据结构,用来表示键值对的集合,这些键值对都可以通过键和索引来进行访问。

SortedList中的键值总是按照键值来进行排序,SortedList是Hashtable和Array的结合,当通过元素的键访问元素时,比较像哈希表Hashtable;当使用GetByIndex元素索引访问元素时,比较像Array。

所以顺序基于排序顺序,SortedList在操作上要比Hashtable操作要慢,但是SortedList允许通过相关键和索引对值进行访问,更加的灵活。

下面就来看一下排序列表SortedList的使用:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Demo5 : MonoBehaviour
    void Start()
        SortedList table = new SortedList();
        table.Add("5", "50");
        table.Add("1", "10");
        table.Add("4", "40");
        table.Add("3", "30");
        //获取键的集合
        foreach (string item in table.Keys)
            Debug.Log(table[item]);

三、排序字典SortedDictionary

排序字典SortedDictionary,是一个泛型类,检索运算复杂度为O(log n)的二叉搜索树,其中的n是字典中的元素数。

SortedDictionary也是一个键值对类型的数据结构,需要比较器实现来执行键比较。可以使用一个接受 comparer 参数的构造函数来指定 IComparer 泛型接口的实现;如果不指定实现,则使用默认的泛型比较器 Comparer.Default。如果类型 TKey 实现 System.IComparable 泛型接口,则默认比较器使用该实现。

C# 语言的 foreach 语句,需要集合中每个元素的类型。由于 SortedDictionary 的每个元素都是一个键/值对,因此元素类型既不是键的类型,也不是值的类型。而是 KeyValuePair 类型。

下面的代码演示SortedDictionary的用法:

3-1、创建及初始化

SortedDictionary<T, T> table = new SortedDictionary<T, T>();

T是泛型类型,可以是string、int,也可以是自定义类型

3-2、添加元素

通过Add()函数来添加元素

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Demo5 : MonoBehaviour
    void Start()
        SortedDictionary<string, string> table = new SortedDictionary<string, string>();
        table.Add("5", "50");

3-3、通过Key查找元素

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Demo5 : MonoBehaviour
    void Start()
        SortedDictionary<string, string> table = new SortedDictionary<string, string>();
        table.Add("5", "50");
        table.Add("1", "10");
        table.Add("4", "40");
        table.Add("3", "30");
        if (table.ContainsKey("5"))
            Debug.Log(table["5"]);

3-4、通过KeyValuePair遍历元素

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Demo5 : MonoBehaviour
    void Start()
        SortedDictionary<string, string> table = new SortedDictionary<string, string>();
        table.Add("5", "50");
        table.Add("1", "10");
        table.Add("4", "40");
        table.Add("3", "30");
        foreach (KeyValuePair<string, string> item in table)
            Debug.Log(item.Key + " " + item.Value);

3-5、遍历键Key或遍历值Value

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Demo5 : MonoBehaviour
    void Start()
        SortedDictionary<string, string> table = new SortedDictionary<string, string>();
        table.Add("5", "50");
        table.Add("1", "10");
        table.Add("4", "40");
        table.Add("3", "30");
        //遍历键
        foreach (string Keys in table.Values)
            Debug.Log(Keys);
        //遍历值
        foreach (string Value in table.Keys)
            Debug.Log(Value);

3-6、移除指定的键值

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Demo5 : MonoBehaviour
    void Start()
        SortedDictionary<string, string> table = new SortedDictionary<string, string>();
        table.Add("5", "50");
        table.Add("1", "10");
        table.Add("4", "40");
        table.Add("3", "30");
        if (table.ContainsKey("1"))
            table.Remove("1");

3-7、 其他常见属性及方法

属性及方法介绍
Comparer:获取用于确定字典中的键是否相等的 IEqualityComparer。
Count:获取包含在 Dictionary中的键/值对的数目。
Item:获取或设置与指定的键相关联的值。
Keys:获取包含 Dictionary中的键的集合。
Values:获取包含 Dictionary中的值的集合。
Add:将指定的键和值添加到字典中。
Clear:从 Dictionary中移除所有的键和值。
ContainsKey:确定 Dictionary是否包含指定的键。
ContainsValue:确定 Dictionary是否包含特定值。
GetEnumerator:返回循环访问 Dictionary的枚举数。
GetType:获取当前实例的 Type。 (从 Object 继承。)
Remove:从 Dictionary中移除所指定的键的值。
ToString:返回表示当前 Object的 String。 (从 Object 继承。)
TryGetValue:获取与指定的键相关联的值。
推荐阅读CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客QQ群:1040082875大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。一、前言在日常开发中,常常会用到数据集合,那么数据集合是什么呢,数据集合也没有想象中那么复杂。数据集合就是专门用来存储数据、检索数据,以及对数据一系列操作的类。这些类有:ArrayList数组、List列表、Queue队列、Dictionary字典、Hashtable哈希表、S.
python语言中的列表排序方法有三个:reverse反转/倒序排序sort正序排序sorted可以获取排序后的列表。在更高级列表排序中,后两中方法还可以加入条件参数进行排序。 reverse()方法 将列表中元素反转排序,比如下面这样 >>> x = [1,5,2,3,4] >>> x.reverse() [4, 3, 2, 5, 1] reverse列表反转排序:是把原列表中的元素顺序从左至右的重新存放,而不会对列表中的参数进行排序整理。如果需要对列表中的参数进行整理,就需要用到列表的另一种排序方式sort正序排序sort()排序方法 此函数方法对列表内容进行
在程序中使用字典进行数据信息统计时,由于字典是无序的所以打印字典时内容也是无序的。因此,为了使统计得到的结果更方便查看需要进行排序。Python中字典排序分为按“键”排序和按“值”排序。下面话不多说了,来一起看看详细的介绍吧 我们有一个字典列表,想根据一个或多个字典中的值来对列表排序。 例如,有如下字典列表,根据字典中的x,由大到小排序这个列表: l = [{'x':1, 'y':2}, {'x':2, 'y':3}, {'x':3, 'y':4}] 排序sorted内置函数,关键字key参数用lambda表达式取出字典中x值作为排序依据,关键字reverse
很多时候,我们需要对List进行排序,Python提供了两个方法,对给定的List L进行排序: 方法1.用List的成员函数sort进行排序 方法2.用built-in函数sorted进行排序(从2.4开始) 这两种方法使用起来差不多,以第一种为例进行讲解: 从Python2.4开始,sort方法有了三个可选的参数,Python Library Reference里是这样描述的 复制代码 代码如下: cmp:cmp specifies a custom comparison function of two arguments (iterable elements) which should
本文实例讲述了python使用sorted函数对列表进行排序的方法。分享给大家供大家参考。具体如下: python提供了sorted函数用于对列表进行排序,并且可以按照正序或者倒序进行排列 #创建一个数字组成的列表 numbers = [5, 1, 4, 3, 2, 6, 7, 9] #输出排序后的数字数组 print sorted(numbers) #输出原始数组,并未被改变 print numbers my_string = ['aa', 'BB', 'zz', 'CC', 'dd', EE] #按字符顺序对字符串列表进行排序,默认为按字符顺序排序 print sorted(my_s
unity3d命令字典 用于在自定义ScriptableObject和MonoBehaviour类中添加有序词典的库,只要键和值类型是可序列化的,就可以由Unity进行序列化。 $ yarn add rotorz/unity3d-ordered-dictionary 该软件包与工具兼容。 有关将程序​​包同步到Unity项目中的信息,请参阅工具的。 具有直观界面的默认检查器。 为名称使用键的UnityEngine.Object的位置插入插入。 每个ScriptableObject或MonoBehaviour都有多个字典! 可序列化的词典资产文件。 支持任何可序列化的键和值类型。 订购字典unity3d-ordered-dictionary库设计为使用npm软件包管理器安装到Unity项目中,然后使用unity3d-package-syncer实用程序同步到“资
private static void DictonarySort(Dictionary<int, Vector3> dic, ref Dictionary<int, Vector3> refDic) dic = (from temp in dic ...
SortedList 类代表了一系列按照键来排序的键/值对,这些键值对可以通过键和索引来访问。 排序列表是数组和哈希表的组合。它包含一个可使用键或索引访问各项的列表。如果您使用索引访问各项,则它是一个动态数组(ArrayList),如果您使用键访问各项,则它是一个哈希表(Hashtable)。集合中的各项总是按键值排序SortedList 类的方法和属性 下表列出了 So
Python列表具有内置的 list.sort()方法,可以在原地修改列表。 还有一个 sorted()内置的函数从迭代构建一个新的排序列表。在本文中,我们将探讨使用Python排序数据的各种技术。 请注意,sort()原始数据被破坏,sorted()没有对原始数据进行操作,而是新建了一个新数据。 一、基本的排序 最基本的排序很简单。只要使用sorted()函数即可返回一个 新的排序列表 >>>sorted([5, 2, 3, 1, 4]) [1, 2, 3, 4, 5] 咱们也可以使用 list.sort()方法。该方法是对列表list进行的原地操作(原数据被修改,已经不是原来的本来面目
SortedDictionary<string, int> monsterProb = new SortedDictionary<string, int> {"king", 5 }, {"archer",1...
sorted函数可以对字典进行排序。默认按照字典的键进行排序。 如果要按照字典的值进行排序,可以使用lambda函数和operator.itemgetter()来实现。 示例代码: import operator d = {'a': 2, 'b': 1, 'c': 3} sorted_d = sorted(d.items(), key=operator.itemgetter(1)) print(sorted_d) 输出结果: [('b', 1), ('a', 2), ('c', 3)] 也可以使用lambda 函数 d = {'a': 2, 'b': 1, 'c': 3} sorted_d = sorted(d.items(), key=lambda x: x[1]) print(sorted_d) 输出结果: [('b', 1), ('a', 2), ('c', 3)]