泛型:一种程序特性,在定义时无需指定特定的类型,而在使用时则要

集合优点:集合不用规定空间大小,而数组则用。

集合与数组相互转换:

            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接口的实现类

 

posted on 2023-05-06 18:03  阿霖找BUG  阅读(11)  评论(0编辑  收藏  举报