red*_*nal 3 .net c# collections set
考虑这个类
public class A
{
float Order
string Name
public A(float order, string name)
{
Order = order;
Name = name;
}
}
Run Code Online (Sandbox Code Playgroud)
如果我将此添加到 a 中SortedSet<A>,它如何知道向哪个成员订购?如果我什至可以首先指定这一点,我将如何指定。我想该集合的最佳性能是在添加时对其进行排序,而不是添加然后通过Sort().
SortedSet<A>将期望您的班级实现IComparable<A>. 或者,您可以提供一个类型的比较器IComparer<A>来对您的类进行外部排序,如下所示:
class ComparerForClassAByOrder : IComparer<A> {
public int Compare(A left, A right) {
return Math.Sign(left.Order-right.Order);
}
}
class ComparerForClassAByName : IComparer<A> {
public int Compare(A left, A right) {
return left.Name.CompareTo(right.Name);
}
}
Run Code Online (Sandbox Code Playgroud)
现在您可以使用不同的比较器创建两个排序集:
var soredByOrder = new SortedSet<A>(new ComparerForAByOrder());
var soredByName = new SortedSet<A>(new ComparerForAByName());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1588 次 |
| 最近记录: |