C#泛型之List操作示例
来源:互联网 发布:recorder.js 编辑:程序博客网 时间:2024/06/06 09:19
转自:http://blog.itpub.net/12639172/viewspace-478294/
private void button1_Click(object sender, EventArgs e) { label1.Text = ""; /* ArrayList AL = new ArrayList(3); TestData temp = new TestData(1); AL.Add(temp); AL.Add(new TestData(2)); AL.Add(new TestData(3)); foreach (TestData item in AL) { label1.Text += item.Val.ToString() + " "; item.Val += 1; } foreach (TestData item in AL) { label1.Text += item.Val.ToString() + " "; } */ List racers; List racers2; FindRacer finder; //-------------------------------------------------------------------------------- //生成泛型对象 racers = new List(); racers.Add(new Racer("M J", "L")); racers.Add(new Racer("AD3 R", "OK3")); racers.Add(new Racer("M2 O", "L2")); racers.Add(new Racer("AD2 Q", "OK2")); racers.Add(new Racer("M1 W", "L")); racers.Add(new Racer("AD4 A", "OK4")); racers.Add(new Racer("AD1 L", "OK1")); //跌代显示泛型对象所有元素 label1.Text += "\n跌代显示泛型对象所有元素\n"; foreach (Racer item in racers) { label1.Text += item.ToString() + " "; } //-------------------------------------------------------------------------------- /* List查找对象:Preadcate是一个委托,它引用一个谓词方法. public T Find match); public List FindAll match); */ //委托查找所有满足条件的元素 label1.Text += "\nFindAll(Car==\"L\")\n"; finder = new FindRacer("L"); foreach(Racer item in racers.FindAll(new Predicate(finder.DrivingCarPredicate))) { label1.Text += item.ToString() + " "; } label1.Text += "\nFindAll(Car==\"L\")将结果赋给其它泛型对象\n"; racers2 = racers.FindAll(new Predicate(finder.DrivingCarPredicate));//返回泛型对象 foreach (Racer item in racers2) { label1.Text += item.ToString() + " "; } //委托查找一个元素(找到的第一个元素) label1.Text += "\nFind(Car==\"L\")\n"; finder = new FindRacer("L2"); label1.Text += racers.Find(new Predicate(finder.DrivingCarPredicate)).ToString(); //将查找出的元素做修改 racers.Find(new Predicate(finder.DrivingCarPredicate)).Car = "L"; label1.Text += "\n将查找出元素修改过后\n"; finder = new FindRacer("L"); foreach (Racer item in racers.FindAll(new Predicate(finder.DrivingCarPredicate))) { label1.Text += item.ToString() + " "; } //-------------------------------------------------------------------------------- /* List.ForEach()可以用于对每个元素执行一些操作. 它使用Action委托对集合中的每个元素执行操作.Action委托返回的类型是void. */ racers.ForEach(delegate(Racer r) { r.Car += "_CAR"; }); label1.Text += "\nList.ForEach()全部修改对象\n"; foreach (Racer item in racers) { label1.Text += item.ToString() + " "; } //-------------------------------------------------------------------------------- /* List.Sort对元素进行排序 */ //public void List.Sort(Comparison), 是一个委托方法,该方法带两个T类型参数; racers.Sort(delegate(Racer r1, Racer r2) { return r1.Car.CompareTo(r2.Car); }); label1.Text += "\n 排序public void List.Sort(Comparison)\n"; foreach (Racer item in racers) { label1.Text += item.ToString() + " "; } //public void List.Sort(IComparer) racers.Sort(new RacerComparer(RacerComparer.CompareType.Name)); label1.Text += "\n 排序public void List.Sort(IComparer)\n"; foreach (Racer item in racers) { label1.Text += item.ToString() + " "; } //-------------------------------------------------------------------------------- /* 类型转换 */ List persons = racers.ConvertAll(delegate(Racer r) { int ixSeparator = r.Name.LastIndexOf(' ') + 1; string lastname = r.Name.Substring(ixSeparator, r.Name.Length - ixSeparator); string firstname = r.Name.Substring(0, ixSeparator - 1); return(new Person(firstname, lastname)); }); label1.Text += "\n List.ConvertAll类型转换\n"; foreach (Person item in persons) { label1.Text += item.ToString() + " "; } label1.Text += "\n 类型转换后的源数据\n"; foreach (Racer item in racers) { label1.Text += item.ToString() + " "; } //-------------------------------------------------------------------------------- }//-------------------------------------------------------------------------------- //实体类 class Racer { private string name; public string Name { get { return (name); } } private string car; public string Car { get { return (car); } set { car = value; } } public Racer(string name, string car) { this.name = name; this.car = car; } public override string ToString() { return name + "," + car; } } //-------------------------------------------------------------------------------- //查找类 class FindRacer { private string car; public FindRacer(string car) { this.car = car; } public bool DrivingCarPredicate(Racer racer) { return (racer.Car == car); } } //排序类 class RacerComparer : IComparer { public enum CompareType { Name, Car } private CompareType compareType; public RacerComparer(CompareType compareType) { this.compareType = compareType; } public int Compare(Racer x, Racer y) { int result = 0; switch (compareType) { case CompareType.Name: { result = x.Name.CompareTo(y.Name); break; } case CompareType.Car: { result = x.Car.CompareTo(x.Car); break; } } return (result); } } //-------------------------------------------------------------------------------- //类型转换类 public class Person { private string firstname; private string lastname; public Person(string firstname, string lastname) { this.firstname = firstname; this.lastname = lastname; } public override string ToString() { return (firstname + "." + lastname); } }
0 0
- C#泛型之List操作示例
- C#开发之List泛型集合
- C# List 用法与示例
- C# List 用法与示例
- c#中list使用示例
- C# List 用法与示例
- c#对list排序示例
- C# Array 操作 示例
- C# Excel操作示例
- C# Excel操作示例 .
- C#泛型示例
- Java List的操作示例
- C# 泛型之list<T>与ArrayList<object>比较
- C#泛型方法示例
- C#中的List<string>泛型类示例
- C#中的List<string>泛型类示例
- C#中的List<string>泛型类示例
- C#泛型类之List
- 操作系统——进程调度之短进程优先
- Scala语言学习笔记
- Android:不同drawable文件夹的区别
- 黑马程序员----JAVA中的自增(++)和自减(--)运算符
- linux scp命令(主机,服务器间复制文件)
- C#泛型之List操作示例
- secureCRT 查看日志常用命令
- OJ模板库
- HDU 1114
- Java中throws和throw的区别讲解
- 2015_07_20_正式踏入ACM
- Windows/Linux环境下模拟服务端口方法
- 修改任务栏的任务按钮(任务栏标签)的显示宽度
- 将ppt转成pdf合适的转换器