C# :自己动手实现:使用数组的方式实现List
来源:互联网 发布:网店美工学生实训报告 编辑:程序博客网 时间:2024/05/18 00:01
今天用List的时候突然想到。List在C#内部究竟是如何实现的
为什么可以动态增删元素,而数组不行,查了一下相关资料,发现大家实现的方式各不相同。
于是自己用了数组的方式实现了一个List
具体是实现方式其实数组也没有动态的变换长度,而是感觉用了一个障眼法的样子。弄了一个最大的容量和当前数组有效的长度
class MyList<T> { private T[] myArray; private int size; //当前长度 private int capacity; //最大容量 public int Count { get { return size; } } //长度计数 public T this[int index] //索引器 { get { return myArray[index]; } set { myArray[index] = value; } } public MyList() { size = 0; capacity = 10; myArray = new T[capacity]; } public void Add(T n) { if (size == capacity) { capacity *= 2; T[] tempArray = myArray; myArray = new T[capacity]; tempArray.CopyTo(myArray, 0); } myArray[size] = n; size += 1; } public void Insert(int index, T n) { if (size==capacity) { capacity *= 2; } for (int i = size; i > index; i--) { myArray[i] = myArray[i - 1]; } myArray[index] = n; size++; } public void RemoveAt(int index) { if (index<0&&index>size) { return; } for (int i = index; i <size-1; i++) { myArray[i] = myArray[i + 1]; } myArray[size-1]=default(T); size--; } public void Remove(T n) { for (int i = 0; i < myArray.Length; i++) { if (myArray[i].Equals(n)) { RemoveAt(i); } } } }
特别简单的一串代码。没有做任何的异常处理。在删除数据后也没有做判断是否需要释放过多的空间
阅读全文
0 0
- C# :自己动手实现:使用数组的方式实现List
- 自己动手实现一个C#中List
- c# list排序的三种实现方式
- c# list排序的三种实现方式
- c# list排序的三种实现方式
- c# list排序的三种实现方式
- c# list排序的三种实现方式
- c# list排序的三种实现方式
- c# list排序的三种实现方式
- 使用动态数组的方式实现栈
- 使用指针的方式实现数组逆序
- 自己动手,实现一种类似List<T>的数据结构(二)
- 自己动手开发音乐播放器《六》播放方式的实现
- 三种C#实现数组反转方式
- FIFO的数组实现方式
- 使用JavaScript实现数组去重的几种方式
- 使用移动数组下标的方式实现增删改查
- C# 自己动手实现Spy++(一)
- linux C下 利用宏函数打印调试信息
- 欢迎使用CSDN-markdown编辑器
- A 2017 Guide to Semantic Segmentation with Deep Learning
- win10如何设置休眠选项
- 在Centos7 上安装SVN
- C# :自己动手实现:使用数组的方式实现List
- c语言练手——记录1
- python---xpath使用
- webots自学笔记(二)节点与机器人建模
- 前端上传组件Plupload使用指南
- 清除微信内置浏览器缓存
- poj 2586 Y2K Accounting Bug【贪心】【刷题计划】
- Android基础之AsyncTask的doInBackground方法参数详解
- using(){}的使用