class Mylist<T> {
// 储存数据
public T[] data = new T[0];
// cout 用来代表数组的长度
public int count = 0;
// 定义属性访问 访问属性的时候获取数组的长度 容量
public int Capacity
{
get { return data.Length; }
}
// 访问属性的时候 获取数据的个数
public int Cout
{
get { return count; }
}
public void Add(T item)
{
// 添加先判断 长度是不是为0 是0重新赋值 将长度改为 4
if (data.Length == 0)
{
data = new T[4];
}
if (data.Length == count)
{
Resize();
}
data[count] = item;
count++;
}
// 定义索引器 访问数组中的某个数据
public T this[int index]
{
get {
if (index < 0 || index > count-1)
{
// throe 抛出异常
throw new IndexOutOfRangeException("超出索引长度");
}
return data[index];
}
set {
if (index < 0 || index > count-1)
{
throw new IndexOutOfRangeException("超出索引长度");
}
data[index] = value;
}
}
//在某个位置 插入 数据
public void Insert(int index , T item)
{
if (index < 0 || index > count - 1)
{
// throe 抛出异常
throw new IndexOutOfRangeException("超出索引长度");
}
if (count == data.Length)
{
Resize();
}
for (int i = count-1; i > index-1; i--)
{
data[i+1] = data[i];
}
data[index] = item;
count++;
}
// 检查某个 数据 是否 存在
public int Indexof(T item)
{
int index = -1;
for (int i = 0; i < count; i++)
{
//dynamic ite = item;
//if (data[i] == ite)
if (data[i].Equals(item))
{
index = i;
break;
}
}
return index;
}
public int Indexofhou(T item)
{
int index = -1;
for (int i = count-1; i >= 0; i--)
{
if (data[i].Equals(item))
{
index = i;
break;
}
}
return index;
}
// 正排序
public void Sort()
{
Array.Sort(data, 0, count);
}
// 到排序
public void Sorts()
{
for (int i = 0; i < count-1; i++)
{
for (int j = 0; j < count-1-i; j++)
{
dynamic num = data[j];
dynamic num1 = data[j+1];
if (num<num1)
{
dynamic temp = data[j];
data[j] = data[j + 1];
data[j + 1] = temp;
}
}
}
}
// 删除指定索引处的元素
public void RemoveAt(int index)
{
if (index < 0 || index >count-1)
{
throw new IndexOutOfRangeException("索引超出范围");
}
for (int i = index; i < count - 1; i++)
{
data[i] = data[i + 1];
}
count--;
}
// 扩容
private void Resize()
{
T[] temp = new T[count * 2];
for (int i = 0; i < data.Length; i++)
{
temp[i] = data[i];
}
data = temp;
}
}
使用:
Mylist<int> mylist = new Mylist<int>();
Console.WriteLine(mylist.Capacity);
mylist.Add(1);
mylist.Add(1);
mylist.Add(1);
mylist.Add(1);
mylist.Add(1);
// 看数组长度
Console.WriteLine(mylist.Cout);
mylist[2] = 500;
Console.WriteLine(mylist[2]);
Console.WriteLine("------------------");
mylist.Insert(3, 666);
mylist.Insert(3, 888);
for (int i = 0; i < mylist.Cout; i++)
{
Console.WriteLine(mylist[i]);
}
Console.WriteLine("-----------------------------");
Console.WriteLine(mylist.Indexof(666)); // 正 第一个
Console.WriteLine(mylist.Indexofhou(666));// 到 第一个