前言在Unity有一个与数据容器息息相关的命名空间: 本篇博客用来介绍这些通过泛型实现的安全类型的数据容器( Array特点: 数组是一种线性结构,需要声明长度 通过下标查找时间复杂度为O(1) 插入删除比较复杂 常用属性:
方法:
使用方式: 通过下面的代码来理解一些关键属性方法的使用方式: int[] nums = new int[] { 2, 7, 11, 15 }; //leangth来获取数组的长度 Console.WriteLine(nums.Length); //对数组中元素进行排序 Array.Sort(nums); //反转数组中元素的顺序 Array.Reverse(nums); //复制nums数组 int[] nums_Copy = (int[])nums.Clone(); //清除数组元素,将nums中所有元素变为0 Array.Clear(nums, 0, nums.Length); //同样将数组中元素恢复默认 nums.Initialize(); ArrayListArrayList核心是数组,但是是在数组的基础上进行了扩展,首先就是其动态扩容的特点,然后再一定程度上同日出生了其查询速度 ArrayList的使用需要引入命名方法: 特点:
存储的是对象:
属性
方法
使用方式 关于 //创建 ArrayList m_arrayList = new ArrayList(); ArrayList al = new ArrayList { 1, 2, 3, 4 }; //元素插入 m_arrayList.Add("001"); m_arrayList.Add(1); //第一中遍历方式 for(int i=0;i<m_arrayList.Count;i++) { Console.WriteLine(m_arrayList[i]); } //第二种遍历方式 foreach(Object j in m_arrayList) { Console.WriteLine(j); } ListList就是通过将泛型数据存储在一个泛型数组中,从而实现一个数据安全类型的列表,添加元素时若超过中当前泛型数组的容量,则进行二倍扩容,进而实现 特点: 核心是数组:
内存优化:
属性:
方法:
使用方式 通过上面的属性方法,也可以看出其使用方式于 //创建一个列表,长度确定的情况下可以规定长度,减少new的产生 List<int> nums = new List<int>(12); //向列表插入数据 nums.Add(1); nums.Add(2); //遍历列表元素 for(int i=0;i<nums.Count;i++) { Console.WriteLine(nums[i]); } foreach(int num in nums) { Console.WriteLine(num); } //判断某一个元素是否在列表中 if(nums.Contains(1)) { Console.WriteLine("1在列表nums中"); } //排序 nums.Sort(); HashTable特点
//哈希表结构体 private struct bucket { public Object key;//键 public Object values;//值 public int hashCode;//哈希码 } 原理:
LinkedList特点:
其属性方法: 属性:
方法:
Dictionary
字典在C#中是一种很常用的数据容器,在
特点:
属性:
方法:
使用方式: 关于字典的使用方式还是比较复杂的,主要是两个变量以及两者之间的对应关系的理解 //创建一个字典 Dictionary<string, string> peoples = new Dictionary<string, string>(); //插入键值对 if(!peoples.ContainsKey("小明")) { peoples.Add("小明", "男"); peoples.Add("小红", "女"); } //遍历字典中所有的键,同样可以遍历所有的值 Dictionary<string,string>.KeyCollection keys = peoples.Keys; foreach(string s in keys) { Console.WriteLine(s); } //遍历字典并输出键和值 foreach (KeyValuePair<string, string> kv in peoples) { Console.WriteLine(kv.Key); Console.WriteLine(kv.Value); } //修改键值对的值 if (peoples.ContainsKey("小明")) { peoples["小明"] = "女"; } //删除键值对 if (peoples.ContainsKey("小明")) { peoples.Remove("小明"); } Queue队列的特点是先进先出,主要是应用在一些特殊的场景,需要实现数据的一个先进先出的效果 特点:
属性:
Stack特点:
属性:
方法
|
|