myList.cs
c#using System;
using System.Collections.Generic;
using System.Text;
namespace MyList列表
{
class MyList<T>
{
private T[] data = new T[0];//data null
private int count = 0;// 元素个数 数据个数
public int Capacity //获取容量大小
{
get
{
return data.Length;
}
}
public int Count //获取元素个数
{
get
{
return count;
}
}
public void Add(T item) //添加元素
{
if (data.Length == 0)
{
data = new T[4];
}
if (data.Length == count) //添加元素之前 ,先判断数组是否已经满
{
T[] temp = new T[count * 2];
for(int i = 0; i < data.Length; i++)
{
temp[i] = data[i];
}
data = temp;
}
data[count] = item;
count++;
}
public T this[int index] //访问元素
{
get
{
if(index<0 || index > count - 1)
{ //抛出异常
throw new ArgumentOutOfRangeException("索引参数超出范围了");
}
return data[index];
}
set
{
data[index] = value;
}
}
public void Insert(int index,T item) //插入元素
{
if (index < 0 || index > count - 1) //判断是否存在索引
{
throw new ArgumentOutOfRangeException("索引参数超出范围了");
}
for(int i = count - 1; i > index - 1; i--)
{
// count-1 index
data[i + 1] = data[i];
}
data[index] = item;
count++;
}
public void RemoveAt(int index) //移除指定位置元素
{
if (index < 0 || index > count - 1)
{
throw new ArgumentOutOfRangeException("索引参数超出范围了");
}
for(int i = index + 1; i < count; i++)
{
// index+1 count-1
data[i - 1] = data[i];
}
count--;
}
public int IndexOf(T item) //从前往后获取元素所在的索引位置
{
int index = -1;
for(int i = 0; i < count; i++)
{// ToString Equals
if (item.Equals(data[i]) )
{
index = i;break;
}
}
return index; //从前往后
}
public int LastIndexOf(T item)//从后往前获取元素所在的索引位置
{
int index = -1;
for (int i=count-1;i>=0;i--)
{// ToString Equals
if (item.Equals(data[i]))
{
index = i; break;
}
}
return index; //从后往前
}
public void Sort() //排序
{
Array.Sort(data, 0, count); //0, count 指范围
}
}
}
Program.cs
c#
using System;
using System.Collections.Generic;
namespace MyList列表
{
class Program
{
static void Main(string[] args)
{
// 1.Capacity 获取容量⼤⼩
MyList<int> list = new MyList<int>();
Console.WriteLine(list.Capacity);
// 2.Add()⽅法添加元素
list.Add(1);
list.Add(2);
list.Add(3);
list.Add(4);
list.Add(5);
list.Add(4);
// 5.Count属性访问元素个数
Console.WriteLine(list.Count);
//遍历集合
for(int i = 0; i < list.Count; i++)
{
Console.Write(list[i] + " ");
}
// 3.Insert()⽅法插⼊元素
list.Insert(2, 100);
for (int i = 0; i < list.Count; i++) //遍历集合
{
Console.Write(list[i] + " ");
}
Console.WriteLine();
// 4.[index]访问元素(索引器)
int temp1 = list[10];
int temp2 = list[-1];
List<int> l = new List<int>();
int temp = l[-1];
// 6.RemoveAt()⽅法移除指定位置的元素
list.RemoveAt(3);
for (int i = 0; i < list.Count; i++) //遍历集合
{
Console.Write(list[i] + " ");
}
Console.WriteLine();
// 7.IndexOf()⽅法取得⼀个元素所在列表中的索引位置
Console.WriteLine(list.IndexOf(4)); //从前往后搜索
Console.WriteLine(list.LastIndexOf(4)); //从后往前搜索
// 8.Sort()对列表中是元素进⾏从⼩到⼤排序
list.Sort();
for (int i = 0; i < list.Count; i++) //遍历集合
{
Console.Write(list[i] + " ");
}
Console.WriteLine();
}
}
}