gpt4 book ai didi

c# - 按项目成员对 SortedSet 进行排序

转载 作者:行者123 更新时间:2023-12-04 12:26:38 28 4
gpt4 key购买 nike

考虑这个类

public class A
{
float Order
string Name
public A(float order, string name)
{
Order = order;
Name = name;
}
}

如果我将其添加到 SortedSet<A>它怎么知道由哪个成员(member)订购呢?如果我一开始就可以,我将如何指定它。我想该集合的最佳性能是在添加时对其进行排序,而不是添加然后通过 Sort() 进行排序。 .

最佳答案

SortedSet<A>将期望您的类(class)实现 IComparable<A> .或者,您可以提供类型为 IComparer<A> 的比较器在您的类(class)外部进行排序,如下所示:

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);
}
}

现在您可以使用不同的比较器创建两个排序集:

var soredByOrder = new SortedSet<A>(new ComparerForAByOrder());
var soredByName = new SortedSet<A>(new ComparerForAByName());

关于c# - 按项目成员对 SortedSet 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20023326/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com