【发布时间】:2012-02-22 10:04:48
【问题描述】:
假设我有一个List<Pet>,每个宠物都有一个Pet.Name 和Pet.Type 字段。
例如:
姓名:鲍勃类型:鱼
名称:雷克斯类型:狗
姓名:阿尔夫类型:狗
名称:蓬松类型:猫
名称:阿波罗类型:鱼
名称:芒果类型:马
现在我想首先按名称按字母顺序排序,然后按类型(非字母)排序。
第二个排序(类型)不是按字母顺序,而是特定/自定义。
例如,假设顺序应始终为:鱼、马、狗、猫。
因此,从上述数据中正确排序的列表将如下所示:
阿波罗,鱼
阿尔夫,狗
鲍勃,鱼
毛茸茸的猫
芒果,马
雷克斯,狗
或者说得更清楚:
A,鱼
A,马
A,狗
一只猫
B,鱼
B,马
B,狗
B,猫
C,鱼
C,马
C,狗
C,猫
这意味着有时 Cat 可能会出现在 Dog 之前,但前提是存在名称为“A”的 Cat 而没有名称为“A”的 Dog...明白了吗?
所以它是按字母顺序排序的,但是在每个字母组中,它会根据第二个字段以自定义方式排序。
那么以这种方式对该列表进行排序的最快方法是什么?
【问题讨论】:
-
我没有答案,但我只是想知道:“最快的方式”是指你写得最快还是运行时最快?
-
@BrianSnow Runtime...虽然这里有一个不归路,但我不喜欢例如 500 行的解决方案。
-
你是按名字的第一个字母分组,然后按类型排序吗?如果排序是纯 alpha(name) 后跟类型,我们应该只在名称相同的情况下按类型排序,还是我看错了?
-
@AlanT 这可能确实是一种更好的措辞方式......