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();
}
}
}
本文作者:千纸鹤
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!