我有一个对象数组,它有一个代表工作日的string属性。我想要编写一个合并排序算法来按工作日的顺序对对象数组进行排序。
我能够写一个合并排序算法,但我想知道如何让它按工作日的顺序而不是按字母表排序?非常提前谢谢你。
发布于 2015-04-15 03:24:04
对支持自定义比较器的对象使用集合,或者只在对象as demonstrated here上实现IComparable。然后,只需使用属性的静态映射到排序,或者如果可以将字符串属性映射到DayOfWeek枚举,则使用该内置排序。
发布于 2015-04-15 03:29:54
不要编写排序算法,相反,编写一个简单的比较器来实现IComparer,将数组转换为列表,对列表进行排序,然后根据需要转换回数组。一个可能的比较器可能是这样的:
Public WeekDayNameComparer<YourObject> : IComparer<yourObject>
{
private string[] WeekDays = {"sunday", "monday", ..."friday"}
public int Compare(YourObject x, YourObject y) {
return Array.indexOf(WeekDays, x.WeekDay).CompareTo(Array.indexOf(WeekDays, y.WeekDay));
}
}https://stackoverflow.com/questions/29635615
复制相似问题