我想为IComparer<string>
创建一个SortedDictionary<string, int>
,它会按字母顺序对所有内容进行排序,但如果它看到“其他”的键,则会在列表的末尾添加“其他”。
答案 0 :(得分:2)
你的意思是这样吗?
public sealed class MyComparer : Comparer<string>
{
public override int Compare(string x, string y)
{
if(x == "Other")
return y == "Other" ? 0 : 1;
if(y == "Other")
return -1;
// Change this comparer if required.
return StringComparer.OrdinalIgnoreCase.Compare(x, y);
}
}
用法:
var dict = new SortedDictionary<string, int> (new MyComparer())
{
{ "Other", 1 }, { "aaa", 2 }, { "bbb", 3 }
};
显然,您可以通过编写SpecialCaseAtEndComparer<T>
来使其更通用: