动态数组(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)
{
}
}
}输出结果:
程序和源码:
