动态数组(ArrayList)小程序
实现:添加元素,删除元素,查找元素,反转数组,根据索引值插入元素,根据索引值删除元素,将文本文档中每行数据导入动态数组中,将动态数组中的每个元素导出到文本文档中。清空动态数组等。
using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace 集合 { public partial class Form1 : Form { ArrayList AL = new ArrayList();//声明一个动态数组 public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e)//添加元素 按钮单击事件 { AL.Add(txtys.Text); //将 元素文本框的内容添加到动态数组中。 txtdh.Clear();//清空显示多行文本框。 int max = AL.Count;//获取动态数组中的元素数。 for (int i = 0;i < max;i++)//循环 { txtdh.AppendText("第"+i+"索引的元素为:"+AL[i].ToString() + "\r\n");//在多行文本框中显示动态数组中的元素。 } } private void button2_Click(object sender, EventArgs e)//删除元素 按钮单击事件 { AL.Remove(txtys.Text);//删除 动态数组中的 元素文本框内容。 txtdh.Clear();//清空显示多行文本框。 int max = AL.Count;//获取动态数组中的元素数。 for (int i = 0; i < max; i++)//循环 { txtdh.AppendText("第" + i + "索引的元素为:" + AL[i].ToString() + "\r\n");//在多行文本框中显示动态数组中的元素。 } } private void button3_Click(object sender, EventArgs e)// 根据索引值 插入数据 单击事件 { int a;//声明整型变量。 if (int.TryParse(txtsy.Text,out a) == false)// 判断 索引文本框的值是否可以转变成整数。 { MessageBox.Show("请填写正确的索引值(正整数).");//提示 return;//退出 } if (Convert.ToInt32(txtsy.Text) >= AL.Count)//判断输入的值是否大于或等于 动态数组最大元素数。 { MessageBox.Show("请填写正确的索引值.");//提示 return;//退出 } if (Convert.ToInt32(txtsy.Text) < 0)//判断输入的值是否小于0 { MessageBox.Show("请填写正确的索引值(正整数).");//提示 return;//退出 } AL.Insert(Convert.ToInt32(txtsy.Text),txtys.Text);//将 元素文本框内的元素插入到指定的索引值。 txtdh.Clear();//清空显示多行文本框。 int max = AL.Count;//获取动态数组中的元素数。 for (int i = 0; i < max; i++)//循环 { txtdh.AppendText("第" + i + "索引的元素为:" + AL[i].ToString() + "\r\n");//在多行文本框中显示动态数组中的元素。 } } private void button4_Click(object sender, EventArgs e)//导入 按钮 单击事件 { using (OpenFileDialog ofd = new OpenFileDialog())//声明一个 打开文本的控件。 { ofd.Filter = "文本文档(*.txt)|*.txt";//文本类型 ofd.DefaultExt = "txt";//设置默认的扩展名 ofd.Multiselect = false;//是否可以多选文本。 ofd.Title = "请选择要导入的文本文档...";//标题 if (ofd.ShowDialog() != DialogResult.OK)//判断是否打开文本文件 { MessageBox.Show("请选择要导入的文本文档。");//提示 return;//退出 } using (FileStream fs = File.OpenRead(ofd.FileName) )//打开读取的文件 { using (StreamReader sr = new StreamReader(fs,Encoding.Default))//读取的文件信息 { string s = null;//声明字符串变量 while ((s = sr.ReadLine()) != null)//读取文件信息行赋值给s,并判断读取的文件信息行是否为空。 { AL.Add(s);//添加到动态数组中。 } txtdh.Clear();//清空显示多行文本框。 int max = AL.Count;//获取动态数组中的元素数。 for (int i = 0; i < max; i++)//循环 { txtdh.AppendText("第" + i + "索引的元素为:" + AL[i].ToString() + "\r\n");//在多行文本框中显示动态数组中的元素。 } MessageBox.Show("导入成功.");//提示 } } } } private void button5_Click(object sender, EventArgs e)// 保存 按钮单击事件 { using (SaveFileDialog sfd =new SaveFileDialog()) //声明一个 保存 控件实例 { sfd.Title = "另存为...";//标题 sfd.Filter = "文本文档(*.txt)|*.txt";//保存的类型 sfd.DefaultExt = "txt";//默认扩展名 sfd.AddExtension = true;//自动添加扩展名 if (sfd.ShowDialog() != DialogResult.OK)//判断是否选择保存信息 { MessageBox.Show("请输入要保存的文本文档.");//提示 return;//退出 } using (StreamWriter sw =new StreamWriter(sfd.FileName))//写入 { foreach (var temp in AL)//循环遍历 AL动态数组每一个元素。 { sw.WriteLine(temp);//将元素写入到文本中 } MessageBox.Show("保存成功.");//提示 } } } private void button6_Click(object sender, EventArgs e)//清空 按钮单击事件 { AL.Clear();//清空动态数组 txtdh.Clear();//清空多行文本框 MessageBox.Show("清空成功.");//提示 } private void button7_Click(object sender, EventArgs e)//退出 按钮单击事件 { this.Close();//关闭窗口 } private void button8_Click(object sender, EventArgs e)//查找元素 按钮单击事件 { txtdh.Text = AL.Contains(txtys.Text) ? txtys.Text+":存在动态数组中.它的第一个匹配项的索引值为:"+ AL.IndexOf(txtys.Text) : txtys.Text + ":不存在动态数组中."; //显示查找结果。 } private void button9_Click(object sender, EventArgs e)//根据索引值删除元素 按钮单击事件 { int q;//声明一个整型变量 if (int.TryParse(txtsy.Text,out q) == false)//判断输入的索引值是否可以转变成整型 { MessageBox.Show("请填写正确的索引值(正整数).");//提示 return;//退出 } if (Convert.ToInt32(txtsy.Text) >= AL.Count)//判断输入的索引值是否大于或等于 动态数组的元素数 { MessageBox.Show("请填写正确的索引值.");//提示 return;//退出 } if (Convert.ToInt32(txtsy.Text) < 0)//判断输入的索引值是否小于0 { MessageBox.Show("请填写正确的索引值(正整数).");//提示 return;//退出 } AL.RemoveAt(Convert.ToInt32(txtsy.Text));//删除指定索引值的元素 txtdh.Clear();//清空多行文本框 int max = AL.Count;//获取动态数组中的元素数。 for (int i = 0; i < max; i++)//循环 { txtdh.AppendText("第" + i + "索引的元素为:" + AL[i].ToString() + "\r\n");//在多行文本框中显示动态数组中的元素。 } } private void button10_Click(object sender, EventArgs e)//反转数组 按钮单击事件 { AL.Reverse();//将AL动态数组 元素反转 txtdh.Clear();//清空多行文本框 int max = AL.Count;//获取动态数组中的元素数。 for (int i = 0; i < max; i++)//循环 { txtdh.AppendText("第" + i + "索引的元素为:" + AL[i].ToString() + "\r\n");//在多行文本框中显示动态数组中的元素。 } } private void Form1_Load(object sender, EventArgs e) { } } }
输出结果:
程序和源码: