一、C#简单数据结构类

1.ArrayList(数组表)

知识点一 ArrayList的本质

ArrayList是一个C#为我们封装好的类
它的本质是一个object类型的数组(可以存储任何对象)
ArreyList帮我们封装好了数组的增删查改

知识点二 申明

1
2
//需要 using System.Collections;
ArrayList array = new ArrayList();

知识点三 增删查改

1
2
3
4
5
6
7
8
9
10
11
12
13
//内容增加
array.Add(1);
array.Add("123");
array.Add(true);
array.Add(new object());
array.Add(new Test());
array.Add(1);
//范围增加(把另一个arraylist接在后面)
ArrayList array2 = new ArreyList();
array.AddRange(array2);
//插入
array.Insert(int index,object? value );
array.Insert(1,"999");//在索引为一的地方插入字符串999

1
2
3
4
5
6
//会删掉数组里的第一个出现的括号内的元素
array.Remove(1);
//移除指定位置的元素
array.RemoveAt(0);
//清空
array.clear();

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//得到指定位置的元素(和数组相同的引用方式)
Console.WriteLine(array[0]);
//查看元素是否存在(返回值为bool)
if(array.Contains("123"))
{
Console.WriteLine("123 exist!");
}
//正向查找元素位置
//找到的返回值 是位置,找不到 返回值 是 -1
int index = array.IndexOf(ture);
Console.WriteLine(index); //返回首个非空值位置
Console.WriteLine(array.IndexOf(false)); //返回-1
//反向查找元素位置
//返回时从头开始的索引数
index = array.LastIndexOf(true);
Console.WriteLine(index);

1
2
//给指定位置赋值
array[0] = "999";

遍历

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//长度
Console.WriteLine(array.Count);
//容量
//避免产生过多垃圾,每超过容量一次容量翻倍
Console.WriteLine(array.Capacity);
//for循环遍历
for(int i;i < array.Count;i++)
{
Console.WriteLine(array[i]);
}
//迭代器遍历
foreach(object item in array)
{

}

知识点四 装箱拆箱

ArrayList本质上是一个可以自动扩容的object数组。
由于用万物之父来存储数据,自然就存在装箱拆箱。
当往其中进行值类型存储时就是在装箱,当将值类型对象取出来使用时,就存在拆箱。
所以ArreyList尽量少用,尽量用更好的数据容器(stack和heap内存相互转换)

1
2
3
int num = 1;
array[0] = num; //装箱
num = (int)array[0]; //拆箱

2.Stack(栈)

知识点一 Stack的本质

Stack(栈)同样是C#为我们封装好的一个类,同样是一个有object类组成的数组,但是封装了独特的进出规则,具体情况可以参考手枪的单排弹匣

知识点二 Stack的声明

1
2
//需要 using System.Collections;
Stack stack = new Stack();

知识点三

1

知识点四

知识点五

3.Queue(队列)

4.Hashtable(哈希表)