最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

[C#學(xué)習(xí)筆記13]泛型集合List詳解、比較器接口動(dòng)態(tài)排序、集合數(shù)據(jù)源展示

2020-05-04 22:50 作者:技術(shù)龍的傳人  | 我要投稿

集合定義不用規(guī)定元素個(gè)數(shù)

泛型表示程序特性,定義時(shí)無需指定特定類型,使用時(shí)必須明確類型。應(yīng)用在集合、方法、類中,用<T>表示

List<Course> courseList = new List<Course>();//Course是上一筆記中的類

courseList.Add(course1);

courseList.Add(course2);

使用集合初始化器,將元素一次性的初始化到集合中

List<Course> couseList = new List<Courses>() {course1,course2};

數(shù)組中的元素添加到集合中

Course[] courseArray1 = new Course[] {course1,course2};

List<Course> couseListFromArray = new List<Course>();

courseListFromArray.AddRange(courseArray1);

集合轉(zhuǎn)換成數(shù)組

Course[] courseArray2 = courseList.ToArray();

數(shù)組直接轉(zhuǎn)換成集合

List<Course> courseList3 = courseArray2.ToList();

刪除元素

courseList.Remove(course3);

courseList.RemoveAll(c >= c.Coursed > 10002);

courseList.RemoveAt(2);

courseList.RemoveRange(1,2);


//集合遍歷的兩種方式

? ? ? ? public void TraversalList1(List<Course> courseList)

? ? ? ? {

? ? ? ? ? ? for (int i = 0; i < courseList.Count; i++)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? Console.WriteLine($"{courseList[i].CourseId}\t{courseList[i].CourseName}\t{courseList[i].ClassHour}\t{courseList[i].Teacher}");

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? public void TraversalList2(List<Course> courseList)

? ? ? ? {

? ? ? ? ? ? foreach (Course item in courseList)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? Console.WriteLine($"{item.CourseId}\t{item.CourseName}\t{item.ClassHour}\t{item.Teacher}");

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? /// <summary>

? ? ? ? /// 集合快速查詢方法

? ? ? ? /// </summary>

? ? ? ? /// <param name="courseList"></param>

? ? ? ? public void QueryElements(List<Course> courseList)

? ? ? ? {

? ? ? ? ? ? //集合查詢方法1

? ? ? ? ? ? List<Course> result1 = courseList.FindAll(c => c.CourseId > 10003);

? ? ? ? ? ? //集合查詢方法2

? ? ? ? ? ? var result2 = from c in courseList where c.CourseId > 10003 select c;

? ? ? ? ? ? var result3 = result2.ToList();

? ? ? ? }

集合元素排序

? ? ? ? public void ListOrder()

? ? ? ? {

//值類型元素的排序

? ? ? ? ? ? Console.WriteLine("\r\n----------------------值類型元素排序------------------\r\n");

? ? ? ? ? ? List<int> ageList = new List<int> { 20, 19, 25, 30, 26 };

? ? ? ? ? ? ageList.Sort();//默認(rèn)按照升序排列


? ? ? ? ? ? foreach (int item in ageList)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? Console.WriteLine(item);

? ? ? ? ? ? }

? ? ? ? ? ? ageList.Reverse();

? ? ? ? ? ? Console.WriteLine("-------------");

? ? ? ? ? ? foreach (int item in ageList)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? Console.WriteLine(item);

? ? ? ? ? ? }

對(duì)象集合

? ? ? ? ? ? //對(duì)象集合元素排序(默認(rèn))

? ? ? ? ? ? Console.WriteLine("\r\n----------------------集合默認(rèn)排序------------------\r\n");

? ? ? ? ? ? List<Course> courseList = CreateCourses();

? ? ? ? ? ? courseList.Sort();


? ? ? ? ? ? //以上Sort方法默認(rèn)會(huì)報(bào)錯(cuò)的!所以在Course類中實(shí)現(xiàn)系統(tǒng)接口IComparable<Course>

? ? ? ? ? ? TraversalList1(courseList);

? ? ? ? ? ? //以上我們使用默認(rèn)比較器進(jìn)行排序,很不方便,如果我們需要多種排序,怎么辦?


? ? ? ? ? ? //比較器接口:其實(shí)就是我們可以任意的指定對(duì)象屬性排序,從而實(shí)現(xiàn)動(dòng)態(tài)排序。

? ? ? ? ? ? //集合元素動(dòng)態(tài)排序

? ? ? ? ? ? Console.WriteLine("\r\n----------------------集合動(dòng)態(tài)排序------------------\r\n");


? ? ? ? ? ? //排序方法的定義: public void Sort(IComparer<T> comparer);

? ? ? ? ? ? courseList.Sort(new CourseIdASC());

? ? ? ? ? ? Console.WriteLine("-----------按照編號(hào)升序---------\r\n");

? ? ? ? ? ? TraversalList1(courseList);


? ? ? ? ? ? Console.WriteLine("\r\n-----------按照編號(hào)將序---------\r\n");

? ? ? ? ? ? courseList.Sort(new CourseIdDESC());

? ? ? ? ? ? TraversalList1(courseList);


? ? ? ? ? ? //重要的是理解多態(tài)的原理,因?yàn)镾ort這個(gè)重載的方法就是多態(tài)原理的一個(gè)應(yīng)用。

? ? ? ? ? ? //后面深入學(xué)習(xí)架構(gòu)開發(fā)等更高級(jí)的理論,技能,設(shè)計(jì)模式等,處處都在用多態(tài)!

? ? ? ? ? ? Console.WriteLine("\r\n--------后面高級(jí)課程中,使用LINQ實(shí)現(xiàn)排序------------");

? ? ? ? ? ? var list1 = from c in courseList orderby c.CourseId ascending select c;

? ? ? ? ? ? TraversalList1(list1.ToList());


? ? ? ? ? ? Console.WriteLine("\r\n--------后面使用擴(kuò)展方法OrderByDescending實(shí)現(xiàn)降序------------");

? ? ? ? ? ? var list2 = courseList.OrderByDescending(c => c.CourseId);

? ? ? ? ? ? TraversalList1(list2.ToList());

? ? ? ? ? ? Console.WriteLine("\r\n--------后面使用擴(kuò)展方法OrderBy實(shí)現(xiàn)升序序------------");

? ? ? ? ? ? var list3 = courseList.OrderBy(c => c.ClassHour);

? ? ? ? ? ? TraversalList1(list3.ToList());

? ? ? ? }


? ? ? ? #endregion

? ? }

自定義排序類:根據(jù)需要,添加對(duì)應(yīng)個(gè)數(shù)的排序類

? ? /// <summary>

? ? /// 課程編號(hào)升序

? ? /// </summary>

? ? class CourseIdASC : IComparer<Course>

? ? {

? ? ? ? public int Compare(Course x, Course y)

? ? ? ? {

? ? ? ? ? ? return x.CourseId.CompareTo(y.CourseId);

? ? ? ? }

? ? }

? ? /// <summary>

? ? /// 課程編號(hào)降序

? ? /// </summary>

? ? class CourseIdDESC : IComparer<Course>

? ? {

? ? ? ? public int Compare(Course x, Course y)

? ? ? ? {

? ? ? ? ? ? return y.CourseId.CompareTo(x.CourseId);

? ? ? ? }

? ? }

? ? /// <summary>

? ? /// 課時(shí)升序

? ? /// </summary>

? ? class CourseClassASC : IComparer<Course>

? ? {

? ? ? ? public int Compare(Course x, Course y)

? ? ? ? {

? ? ? ? ? ? return x.ClassHour.CompareTo(y.ClassHour);

? ? ? ? }

? ? }

類:系統(tǒng)接口以I開頭<>,點(diǎn)擊智能標(biāo)簽實(shí)現(xiàn)接口就顯示了接口對(duì)應(yīng)的比較方法不要?jiǎng)?/p>

public class Course : IComparable<Course>

? ? {

? ? ? ? public Course() { }

? ? ? ? public Course(int courseId, string courseName, int classHour, string teacher)

? ? ? ? {

? ? ? ? ? ? this.CourseId = courseId;

? ? ? ? ? ? this.CourseName = courseName;

? ? ? ? ? ? this.ClassHour = classHour;

? ? ? ? ? ? this.Teacher = teacher;

? ? ? ? }

? ? ? ? public int CourseId { get; set; }//課程編號(hào)

? ? ? ? public string CourseName { get; set; }//課程名稱

? ? ? ? public int ClassHour { get; set; }//課時(shí)

? ? ? ? public string Teacher { get; set; }//主講老師

? ? ? ? //接口對(duì)應(yīng)的比較方法(這個(gè)方法的簽名,千萬不要?jiǎng)樱?/p>

? ? ? ? public int CompareTo(Course other)

? ? ? ? {

? ? ? ? ? ? //return this.CourseId.CompareTo(other.CourseId);

? ? ? ? ? ? return other.CourseId.CompareTo(CourseId);

? ? ? ? ? ? //如果把this放到前面,表示按照升序排列,other放到前面就是按照降序排列

? ? ? ? }

? ? }




[C#學(xué)習(xí)筆記13]泛型集合List詳解、比較器接口動(dòng)態(tài)排序、集合數(shù)據(jù)源展示的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
濉溪县| 万州区| 商水县| 东丰县| 库伦旗| 阳朔县| 敖汉旗| 乐山市| 宜章县| 泌阳县| 萍乡市| 乐平市| 绩溪县| 昌图县| 当涂县| 蓬溪县| 黎平县| 临武县| 迭部县| 泸州市| 桐庐县| 彭水| 永福县| 绥棱县| 临潭县| 湘乡市| 林西县| 灵寿县| 志丹县| 西平县| 茶陵县| 屯留县| 台中县| 广宁县| 岫岩| 山东省| 八宿县| 澄城县| 松原市| 横山县| 阳高县|