泛型:一种程序特性,在定义时无需指定特定的类型,而在使用时则要
集合优点:集合不用规定空间大小,而数组则用。
集合与数组相互转换:
Course course4 = new Course(3,"huang",23); Course course5 = new Course(4,"huang",24); Course course6 = new Course(5,"huang",25); //集合不用规定空间大小,而数组则用。 List<Course> courses = new List<Course>() { course4,course5,course6,course4}; Course[] courses1= new Course[] { course6, course5, course4, course4 }; courses.AddRange(courses1);//把数组添加到集合中来 Course[] courses2 = courses.ToArray();//集合转数组 List<Course> courses3 = courses1.ToList();//数组转集合
删除集合元素:
courses.Remove(course4);//删除第一个course4 courses.RemoveAll(c => c.Id == 4);//删除id等于4的,==,>,< courses.RemoveAt(0);//删除下标 courses.RemoveRange(1, 2);//从第一个过后,删除两个--2和3
循环遍历:
for (int i = 0; i < courses.Count; i++) { Console.WriteLine($"我是{courses[i].Name},第{courses[i].Id}号,今年{courses[i].age}岁"); } foreach (Course course in courses) { Console.WriteLine($"{course.Name}\t{course.Id}\t{course.age}"); }
查询元素:
List<Course>c1 =courses.FindAll(c => c.Id > 3); var c2=from c in courses where c.Id == 3 select c;
排序:
但这 适合每一行里面只有一个数字
List<int> nums= new List<int> { 1,2,3,4,5}; nums.Sort();//升序 nums.Reverse();//反转
适合输出一行有多个元素
在Course类中实现系统接口IComparable<Course>
生成的接口代码只能修改里面的内容。
public int CompareTo(Course other)//不能动 { //return this.Id.CompareTo(other.Id);//other放后面是升序,this可以省略 return other.Id.CompareTo(Id);//other放前面是降序,this可以省略 }
调用实现
List<int> nums= new List<int> { 1,2,3,4,5}; nums.Sort();//升序
自定义接口实现类:
/// <summary> /// 课程年龄降序 /// </summary> class CourseAgeDASC : IComparer<Course> { public int Compare(Course x, Course y) { return y.age.CompareTo(x.age); } }
调用接口,其实参数传入的是接口的实现类而不是接口。
多态,一个接口可以有不同的实现类
//排序方法的定义public void Sort(IComparer<T> comparer); courses.Sort(new CourseAgeDASC());//传的参数是IComparer<T> comparer接口的实现类
本文来自博客园,作者:阿霖找BUG,转载请注明原文链接:https://www.cnblogs.com/lin-07/p/17378203.html