a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 學院 > 開發(fā)設計 > 正文

C# 實現(xiàn)List實例中實例元素的排序

2019-11-11 05:11:32
字體:
來源:轉載
供稿:網(wǎng)友

C# 實現(xiàn)List實例中實例元素的排序

實現(xiàn)List實例中元素的排序除了有一下兩種較好的實現(xiàn)途徑:

使需要排序的類實現(xiàn)IComparable<T>接口;創(chuàng)建需要排序的類的一個實現(xiàn)ICompare<T>接口的新類,將新類的實例傳入到List.Sort(newOject)方法中。

代碼示例:

實現(xiàn)IComparable接口方式using System;using System.Collections.Generic;namespace 鴨子{ internal class PRogram { private static void Main() { var ducks = new List<Duck>() { new Duck(){Kind = KindOfDuck.Musovy,Size = 17}, new Duck(){Kind = KindOfDuck.Musovy,Size = 18}, new Duck(){Kind = KindOfDuck.Decoy,Size = 14}, new Duck(){Kind = KindOfDuck.Musovy,Size = 11}, new Duck(){Kind = KindOfDuck.Mallard,Size = 14}, new Duck(){Kind = KindOfDuck.Decoy,Size = 13}, }; ducks.Sort();//鴨子排序 foreach (var duck in ducks) { Console.WriteLine(duck.Kind + " " + duck.Size); } Console.ReadKey(); } } internal class Duck : IComparable<Duck>//鴨子類實現(xiàn)IComparable<T>接口,實現(xiàn)排序功能 { public int Size; public KindOfDuck Kind; public int CompareTo(Duck other) { if (this.Size > other.Size) { return 1; } if (this.Size < other.Size) { return -1; } return 0; } } internal enum KindOfDuck { Mallard, Musovy, Decoy, }}實現(xiàn)ICompare接口方式using System;using System.Collections.Generic;namespace 鴨子1{ internal class Program { private static void Main() { var ducks = new List<Duck>() { new Duck(){Kind = KindOfDuck.Musovy,Size = 17}, new Duck(){Kind = KindOfDuck.Musovy,Size = 18}, new Duck(){Kind = KindOfDuck.Decoy,Size = 14}, new Duck(){Kind = KindOfDuck.Musovy,Size = 11}, new Duck(){Kind = KindOfDuck.Mallard,Size = 14}, new Duck(){Kind = KindOfDuck.Decoy,Size = 13}, }; //var compare=new DuckCompare(){SortBy = SortCriteria.SizeThenKind};//先大小后種類排序 var compare = new DuckCompare() { SortBy = SortCriteria.KindThenSize };//先種類后大小排序 ducks.Sort(compare);//鴨子排序 foreach (var duck in ducks) { Console.WriteLine(duck.Kind + " " + duck.Size); } Console.ReadKey(); } } internal class Duck { public int Size; public KindOfDuck Kind; } internal enum KindOfDuck { Mallard, Musovy, Decoy, } internal enum SortCriteria { SizeThenKind, KindThenSize, } internal class DuckCompare : IComparer<Duck>//新的鴨子類實現(xiàn)ICompare<T>接口,實現(xiàn)排序功能 { public SortCriteria SortBy=SortCriteria.SizeThenKind; public int Compare(Duck x, Duck y) { if (SortBy==SortCriteria.SizeThenKind) { if (x.Size>y.Size) { return 1; } if (x.Size<y.Size) { return -1; } if (x.Kind>y.Kind) { return 1; } if (x.Kind<y.Kind) { return -1; } return 0; } if (x.Kind > y.Kind) { return 1; } if (x.Kind < y.Kind) { return -1; } if (x.Size > y.Size) { return 1; } if (x.Size < y.Size) { return -1; } return 0; } }}

兩種方式對比

IComparable<T>接口方式屬于內嵌方式,要提前設計好,使用起來簡單一點,靈活性就差了一點;ICompare<T>接口方式剛好相反,需要根據(jù)排序創(chuàng)建新的類,但是更加靈活,不用改變現(xiàn)有的沒有排序功能的類,而且能實現(xiàn)復雜排序。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 欧美日韩精品一区二区 | 中文av在线免费观看 | 精品一区二区三区在线观看 | 日韩av一二三四区 | 一区二区国产在线 | 粉嫩av网站 | 国产高清免费 | 1区2区视频| 天天干天天操天天舔 | 成人av免费看 | 亚洲一二三四在线 | 国产欧美一区在线 | 黄色电影免费看 | 日韩xxxbbb | 国产偷录视频叫床高潮对白 | 日韩欧美在线观看视频网站 | 欧美日韩国产综合视频 | 自拍偷拍视频网站 | 久久一区二区三区四区五区 | 日韩电影免费观看 | 久久精彩视频 | www.啪啪 | 网址国产| 91精品国产综合久久久久久丝袜 | 亚洲午夜视频 | 99色在线| 巨大荫蒂视频欧美大片 | 成人免费福利视频 | 久久久久久免费视频 | 日韩视频在线一区二区 | 欧美综合国产 | 欧美国产激情二区三区 | 国产成人精品一区二区三区视频 | 久久人人爽人人爽 | 秋霞影院午夜丰满少妇在线视频 | 91精品国产乱码久久久久久久久 | 亚洲综合无码一区二区 | 中文字幕免费中文 | 日韩午夜在线视频 | 中文字幕三级在线看午夜 | 国产精品视频免费观看 |